namei.c (10ce3cc919f50c2043b41ca968b43c26a3672600) | namei.c (8de52778798fe39660a8d6b26f290e0c93202761) |
---|---|
1/* 2 * linux/fs/ext2/namei.c 3 * 4 * Rewrite to pagecache. Almost all code had been changed, so blame me 5 * if the things go wrong. Please, send bug reports to 6 * viro@parcelfarce.linux.theplanet.co.uk 7 * 8 * Stuff here is basically a glue between the VFS and generic UNIXish --- 181 unchanged lines hidden (view full) --- 190} 191 192static int ext2_link (struct dentry * old_dentry, struct inode * dir, 193 struct dentry *dentry) 194{ 195 struct inode *inode = old_dentry->d_inode; 196 int err; 197 | 1/* 2 * linux/fs/ext2/namei.c 3 * 4 * Rewrite to pagecache. Almost all code had been changed, so blame me 5 * if the things go wrong. Please, send bug reports to 6 * viro@parcelfarce.linux.theplanet.co.uk 7 * 8 * Stuff here is basically a glue between the VFS and generic UNIXish --- 181 unchanged lines hidden (view full) --- 190} 191 192static int ext2_link (struct dentry * old_dentry, struct inode * dir, 193 struct dentry *dentry) 194{ 195 struct inode *inode = old_dentry->d_inode; 196 int err; 197 |
198 if (inode->i_nlink >= EXT2_LINK_MAX) 199 return -EMLINK; 200 | |
201 dquot_initialize(dir); 202 203 inode->i_ctime = CURRENT_TIME_SEC; 204 inode_inc_link_count(inode); 205 ihold(inode); 206 207 err = ext2_add_link(dentry, inode); 208 if (!err) { 209 d_instantiate(dentry, inode); 210 return 0; 211 } 212 inode_dec_link_count(inode); 213 iput(inode); 214 return err; 215} 216 217static int ext2_mkdir(struct inode * dir, struct dentry * dentry, umode_t mode) 218{ 219 struct inode * inode; | 198 dquot_initialize(dir); 199 200 inode->i_ctime = CURRENT_TIME_SEC; 201 inode_inc_link_count(inode); 202 ihold(inode); 203 204 err = ext2_add_link(dentry, inode); 205 if (!err) { 206 d_instantiate(dentry, inode); 207 return 0; 208 } 209 inode_dec_link_count(inode); 210 iput(inode); 211 return err; 212} 213 214static int ext2_mkdir(struct inode * dir, struct dentry * dentry, umode_t mode) 215{ 216 struct inode * inode; |
220 int err = -EMLINK; | 217 int err; |
221 | 218 |
222 if (dir->i_nlink >= EXT2_LINK_MAX) 223 goto out; 224 | |
225 dquot_initialize(dir); 226 227 inode_inc_link_count(dir); 228 229 inode = ext2_new_inode(dir, S_IFDIR | mode, &dentry->d_name); 230 err = PTR_ERR(inode); 231 if (IS_ERR(inode)) 232 goto out_dir; --- 108 unchanged lines hidden (view full) --- 341 if (!new_de) 342 goto out_dir; 343 ext2_set_link(new_dir, new_de, new_page, old_inode, 1); 344 new_inode->i_ctime = CURRENT_TIME_SEC; 345 if (dir_de) 346 drop_nlink(new_inode); 347 inode_dec_link_count(new_inode); 348 } else { | 219 dquot_initialize(dir); 220 221 inode_inc_link_count(dir); 222 223 inode = ext2_new_inode(dir, S_IFDIR | mode, &dentry->d_name); 224 err = PTR_ERR(inode); 225 if (IS_ERR(inode)) 226 goto out_dir; --- 108 unchanged lines hidden (view full) --- 335 if (!new_de) 336 goto out_dir; 337 ext2_set_link(new_dir, new_de, new_page, old_inode, 1); 338 new_inode->i_ctime = CURRENT_TIME_SEC; 339 if (dir_de) 340 drop_nlink(new_inode); 341 inode_dec_link_count(new_inode); 342 } else { |
349 if (dir_de) { 350 err = -EMLINK; 351 if (new_dir->i_nlink >= EXT2_LINK_MAX) 352 goto out_dir; 353 } | |
354 err = ext2_add_link(new_dentry, old_inode); 355 if (err) 356 goto out_dir; 357 if (dir_de) 358 inode_inc_link_count(new_dir); 359 } 360 361 /* --- 62 unchanged lines hidden --- | 343 err = ext2_add_link(new_dentry, old_inode); 344 if (err) 345 goto out_dir; 346 if (dir_de) 347 inode_inc_link_count(new_dir); 348 } 349 350 /* --- 62 unchanged lines hidden --- |