|
@@ -417,9 +417,6 @@ static int f2fs_rename(struct inode *old_dir, struct dentry *old_dentry,
|
|
|
}
|
|
|
|
|
|
f2fs_set_link(new_dir, new_entry, new_page, old_inode);
|
|
|
- down_write(&F2FS_I(old_inode)->i_sem);
|
|
|
- F2FS_I(old_inode)->i_pino = new_dir->i_ino;
|
|
|
- up_write(&F2FS_I(old_inode)->i_sem);
|
|
|
|
|
|
new_inode->i_ctime = CURRENT_TIME;
|
|
|
down_write(&F2FS_I(new_inode)->i_sem);
|
|
@@ -448,6 +445,10 @@ static int f2fs_rename(struct inode *old_dir, struct dentry *old_dentry,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ down_write(&F2FS_I(old_inode)->i_sem);
|
|
|
+ file_lost_pino(old_inode);
|
|
|
+ up_write(&F2FS_I(old_inode)->i_sem);
|
|
|
+
|
|
|
old_inode->i_ctime = CURRENT_TIME;
|
|
|
mark_inode_dirty(old_inode);
|
|
|
|
|
@@ -457,9 +458,6 @@ static int f2fs_rename(struct inode *old_dir, struct dentry *old_dentry,
|
|
|
if (old_dir != new_dir) {
|
|
|
f2fs_set_link(old_inode, old_dir_entry,
|
|
|
old_dir_page, new_dir);
|
|
|
- down_write(&F2FS_I(old_inode)->i_sem);
|
|
|
- F2FS_I(old_inode)->i_pino = new_dir->i_ino;
|
|
|
- up_write(&F2FS_I(old_inode)->i_sem);
|
|
|
update_inode_page(old_inode);
|
|
|
} else {
|
|
|
kunmap(old_dir_page);
|