|
@@ -123,9 +123,9 @@ static int f2fs_create(struct inode *dir, struct dentry *dentry, umode_t mode,
|
|
|
|
|
|
f2fs_lock_op(sbi);
|
|
|
err = f2fs_add_link(dentry, inode);
|
|
|
- f2fs_unlock_op(sbi);
|
|
|
if (err)
|
|
|
goto out;
|
|
|
+ f2fs_unlock_op(sbi);
|
|
|
|
|
|
alloc_nid_done(sbi, ino);
|
|
|
|
|
@@ -133,9 +133,7 @@ static int f2fs_create(struct inode *dir, struct dentry *dentry, umode_t mode,
|
|
|
unlock_new_inode(inode);
|
|
|
return 0;
|
|
|
out:
|
|
|
- clear_nlink(inode);
|
|
|
- iget_failed(inode);
|
|
|
- alloc_nid_failed(sbi, ino);
|
|
|
+ handle_failed_inode(inode);
|
|
|
return err;
|
|
|
}
|
|
|
|
|
@@ -154,15 +152,16 @@ static int f2fs_link(struct dentry *old_dentry, struct inode *dir,
|
|
|
set_inode_flag(F2FS_I(inode), FI_INC_LINK);
|
|
|
f2fs_lock_op(sbi);
|
|
|
err = f2fs_add_link(dentry, inode);
|
|
|
- f2fs_unlock_op(sbi);
|
|
|
if (err)
|
|
|
goto out;
|
|
|
+ f2fs_unlock_op(sbi);
|
|
|
|
|
|
d_instantiate(dentry, inode);
|
|
|
return 0;
|
|
|
out:
|
|
|
clear_inode_flag(F2FS_I(inode), FI_INC_LINK);
|
|
|
iput(inode);
|
|
|
+ f2fs_unlock_op(sbi);
|
|
|
return err;
|
|
|
}
|
|
|
|
|
@@ -253,9 +252,9 @@ static int f2fs_symlink(struct inode *dir, struct dentry *dentry,
|
|
|
|
|
|
f2fs_lock_op(sbi);
|
|
|
err = f2fs_add_link(dentry, inode);
|
|
|
- f2fs_unlock_op(sbi);
|
|
|
if (err)
|
|
|
goto out;
|
|
|
+ f2fs_unlock_op(sbi);
|
|
|
|
|
|
err = page_symlink(inode, symname, symlen);
|
|
|
alloc_nid_done(sbi, inode->i_ino);
|
|
@@ -264,9 +263,7 @@ static int f2fs_symlink(struct inode *dir, struct dentry *dentry,
|
|
|
unlock_new_inode(inode);
|
|
|
return err;
|
|
|
out:
|
|
|
- clear_nlink(inode);
|
|
|
- iget_failed(inode);
|
|
|
- alloc_nid_failed(sbi, inode->i_ino);
|
|
|
+ handle_failed_inode(inode);
|
|
|
return err;
|
|
|
}
|
|
|
|
|
@@ -290,9 +287,9 @@ static int f2fs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
|
|
|
set_inode_flag(F2FS_I(inode), FI_INC_LINK);
|
|
|
f2fs_lock_op(sbi);
|
|
|
err = f2fs_add_link(dentry, inode);
|
|
|
- f2fs_unlock_op(sbi);
|
|
|
if (err)
|
|
|
goto out_fail;
|
|
|
+ f2fs_unlock_op(sbi);
|
|
|
|
|
|
alloc_nid_done(sbi, inode->i_ino);
|
|
|
|
|
@@ -303,9 +300,7 @@ static int f2fs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
|
|
|
|
|
|
out_fail:
|
|
|
clear_inode_flag(F2FS_I(inode), FI_INC_LINK);
|
|
|
- clear_nlink(inode);
|
|
|
- iget_failed(inode);
|
|
|
- alloc_nid_failed(sbi, inode->i_ino);
|
|
|
+ handle_failed_inode(inode);
|
|
|
return err;
|
|
|
}
|
|
|
|
|
@@ -338,18 +333,16 @@ static int f2fs_mknod(struct inode *dir, struct dentry *dentry,
|
|
|
|
|
|
f2fs_lock_op(sbi);
|
|
|
err = f2fs_add_link(dentry, inode);
|
|
|
- f2fs_unlock_op(sbi);
|
|
|
if (err)
|
|
|
goto out;
|
|
|
+ f2fs_unlock_op(sbi);
|
|
|
|
|
|
alloc_nid_done(sbi, inode->i_ino);
|
|
|
d_instantiate(dentry, inode);
|
|
|
unlock_new_inode(inode);
|
|
|
return 0;
|
|
|
out:
|
|
|
- clear_nlink(inode);
|
|
|
- iget_failed(inode);
|
|
|
- alloc_nid_failed(sbi, inode->i_ino);
|
|
|
+ handle_failed_inode(inode);
|
|
|
return err;
|
|
|
}
|
|
|
|
|
@@ -677,10 +670,7 @@ static int f2fs_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode)
|
|
|
release_out:
|
|
|
release_orphan_inode(sbi);
|
|
|
out:
|
|
|
- f2fs_unlock_op(sbi);
|
|
|
- clear_nlink(inode);
|
|
|
- iget_failed(inode);
|
|
|
- alloc_nid_failed(sbi, inode->i_ino);
|
|
|
+ handle_failed_inode(inode);
|
|
|
return err;
|
|
|
}
|
|
|
|