diff options
Diffstat (limited to 'fs/nilfs2')
| -rw-r--r-- | fs/nilfs2/namei.c | 8 | ||||
| -rw-r--r-- | fs/nilfs2/segment.c | 3 |
2 files changed, 3 insertions, 8 deletions
diff --git a/fs/nilfs2/namei.c b/fs/nilfs2/namei.c index 98034271cd0..161791d2645 100644 --- a/fs/nilfs2/namei.c +++ b/fs/nilfs2/namei.c | |||
| @@ -397,7 +397,6 @@ static int nilfs_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
| 397 | new_de = nilfs_find_entry(new_dir, &new_dentry->d_name, &new_page); | 397 | new_de = nilfs_find_entry(new_dir, &new_dentry->d_name, &new_page); |
| 398 | if (!new_de) | 398 | if (!new_de) |
| 399 | goto out_dir; | 399 | goto out_dir; |
| 400 | inc_nlink(old_inode); | ||
| 401 | nilfs_set_link(new_dir, new_de, new_page, old_inode); | 400 | nilfs_set_link(new_dir, new_de, new_page, old_inode); |
| 402 | nilfs_mark_inode_dirty(new_dir); | 401 | nilfs_mark_inode_dirty(new_dir); |
| 403 | new_inode->i_ctime = CURRENT_TIME; | 402 | new_inode->i_ctime = CURRENT_TIME; |
| @@ -411,13 +410,9 @@ static int nilfs_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
| 411 | if (new_dir->i_nlink >= NILFS_LINK_MAX) | 410 | if (new_dir->i_nlink >= NILFS_LINK_MAX) |
| 412 | goto out_dir; | 411 | goto out_dir; |
| 413 | } | 412 | } |
| 414 | inc_nlink(old_inode); | ||
| 415 | err = nilfs_add_link(new_dentry, old_inode); | 413 | err = nilfs_add_link(new_dentry, old_inode); |
| 416 | if (err) { | 414 | if (err) |
| 417 | drop_nlink(old_inode); | ||
| 418 | nilfs_mark_inode_dirty(old_inode); | ||
| 419 | goto out_dir; | 415 | goto out_dir; |
| 420 | } | ||
| 421 | if (dir_de) { | 416 | if (dir_de) { |
| 422 | inc_nlink(new_dir); | 417 | inc_nlink(new_dir); |
| 423 | nilfs_mark_inode_dirty(new_dir); | 418 | nilfs_mark_inode_dirty(new_dir); |
| @@ -431,7 +426,6 @@ static int nilfs_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
| 431 | old_inode->i_ctime = CURRENT_TIME; | 426 | old_inode->i_ctime = CURRENT_TIME; |
| 432 | 427 | ||
| 433 | nilfs_delete_entry(old_de, old_page); | 428 | nilfs_delete_entry(old_de, old_page); |
| 434 | drop_nlink(old_inode); | ||
| 435 | 429 | ||
| 436 | if (dir_de) { | 430 | if (dir_de) { |
| 437 | nilfs_set_link(old_inode, dir_de, dir_page, new_dir); | 431 | nilfs_set_link(old_inode, dir_de, dir_page, new_dir); |
diff --git a/fs/nilfs2/segment.c b/fs/nilfs2/segment.c index 55ebae5c7f3..2de9f636792 100644 --- a/fs/nilfs2/segment.c +++ b/fs/nilfs2/segment.c | |||
| @@ -430,7 +430,8 @@ static void nilfs_segctor_begin_finfo(struct nilfs_sc_info *sci, | |||
| 430 | nilfs_segctor_map_segsum_entry( | 430 | nilfs_segctor_map_segsum_entry( |
| 431 | sci, &sci->sc_binfo_ptr, sizeof(struct nilfs_finfo)); | 431 | sci, &sci->sc_binfo_ptr, sizeof(struct nilfs_finfo)); |
| 432 | 432 | ||
| 433 | if (inode->i_sb && !test_bit(NILFS_SC_HAVE_DELTA, &sci->sc_flags)) | 433 | if (NILFS_I(inode)->i_root && |
| 434 | !test_bit(NILFS_SC_HAVE_DELTA, &sci->sc_flags)) | ||
| 434 | set_bit(NILFS_SC_HAVE_DELTA, &sci->sc_flags); | 435 | set_bit(NILFS_SC_HAVE_DELTA, &sci->sc_flags); |
| 435 | /* skip finfo */ | 436 | /* skip finfo */ |
| 436 | } | 437 | } |
