diff options
author | James Morris <jmorris@namei.org> | 2011-03-07 18:55:06 -0500 |
---|---|---|
committer | James Morris <jmorris@namei.org> | 2011-03-07 18:55:06 -0500 |
commit | 1cc26bada9f6807814806db2f0d78792eecdac71 (patch) | |
tree | 5509b5139db04af6c13db0a580c84116a4a54039 /fs/sysv/namei.c | |
parent | eae61f3c829439f8f9121b5cd48a14be04df451f (diff) | |
parent | 214d93b02c4fe93638ad268613c9702a81ed9192 (diff) |
Merge branch 'master'; commit 'v2.6.38-rc7' into next
Diffstat (limited to 'fs/sysv/namei.c')
-rw-r--r-- | fs/sysv/namei.c | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/fs/sysv/namei.c b/fs/sysv/namei.c index b5e68da2db32..e474fbcf8bde 100644 --- a/fs/sysv/namei.c +++ b/fs/sysv/namei.c | |||
@@ -48,7 +48,6 @@ static struct dentry *sysv_lookup(struct inode * dir, struct dentry * dentry, st | |||
48 | struct inode * inode = NULL; | 48 | struct inode * inode = NULL; |
49 | ino_t ino; | 49 | ino_t ino; |
50 | 50 | ||
51 | d_set_d_op(dentry, dir->i_sb->s_root->d_op); | ||
52 | if (dentry->d_name.len > SYSV_NAMELEN) | 51 | if (dentry->d_name.len > SYSV_NAMELEN) |
53 | return ERR_PTR(-ENAMETOOLONG); | 52 | return ERR_PTR(-ENAMETOOLONG); |
54 | ino = sysv_inode_by_name(dentry); | 53 | ino = sysv_inode_by_name(dentry); |
@@ -246,7 +245,6 @@ static int sysv_rename(struct inode * old_dir, struct dentry * old_dentry, | |||
246 | new_de = sysv_find_entry(new_dentry, &new_page); | 245 | new_de = sysv_find_entry(new_dentry, &new_page); |
247 | if (!new_de) | 246 | if (!new_de) |
248 | goto out_dir; | 247 | goto out_dir; |
249 | inode_inc_link_count(old_inode); | ||
250 | sysv_set_link(new_de, new_page, old_inode); | 248 | sysv_set_link(new_de, new_page, old_inode); |
251 | new_inode->i_ctime = CURRENT_TIME_SEC; | 249 | new_inode->i_ctime = CURRENT_TIME_SEC; |
252 | if (dir_de) | 250 | if (dir_de) |
@@ -258,18 +256,15 @@ static int sysv_rename(struct inode * old_dir, struct dentry * old_dentry, | |||
258 | if (new_dir->i_nlink >= SYSV_SB(new_dir->i_sb)->s_link_max) | 256 | if (new_dir->i_nlink >= SYSV_SB(new_dir->i_sb)->s_link_max) |
259 | goto out_dir; | 257 | goto out_dir; |
260 | } | 258 | } |
261 | inode_inc_link_count(old_inode); | ||
262 | err = sysv_add_link(new_dentry, old_inode); | 259 | err = sysv_add_link(new_dentry, old_inode); |
263 | if (err) { | 260 | if (err) |
264 | inode_dec_link_count(old_inode); | ||
265 | goto out_dir; | 261 | goto out_dir; |
266 | } | ||
267 | if (dir_de) | 262 | if (dir_de) |
268 | inode_inc_link_count(new_dir); | 263 | inode_inc_link_count(new_dir); |
269 | } | 264 | } |
270 | 265 | ||
271 | sysv_delete_entry(old_de, old_page); | 266 | sysv_delete_entry(old_de, old_page); |
272 | inode_dec_link_count(old_inode); | 267 | mark_inode_dirty(old_inode); |
273 | 268 | ||
274 | if (dir_de) { | 269 | if (dir_de) { |
275 | sysv_set_link(dir_de, dir_page, new_dir); | 270 | sysv_set_link(dir_de, dir_page, new_dir); |