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 ---