mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-14 08:13:56 +08:00
Btrfs: refactor error handling to drop inode in btrfs_create()
Refactor it by checking whether the inode has been created and needs to be dropped (drop_inode_on_err) and also if the err variable is set. That way the variable doesn't need to be set on each and every error handling block. Signed-off-by: Filipe Brandenburger <filbranden@google.com> Signed-off-by: Chris Mason <chris.mason@fusionio.com>
This commit is contained in:
parent
2794ed013b
commit
43baa579b3
@ -4989,7 +4989,7 @@ static int btrfs_create(struct inode *dir, struct dentry *dentry,
|
||||
struct btrfs_trans_handle *trans;
|
||||
struct btrfs_root *root = BTRFS_I(dir)->root;
|
||||
struct inode *inode = NULL;
|
||||
int drop_inode = 0;
|
||||
int drop_inode_on_err = 0;
|
||||
int err;
|
||||
u64 objectid;
|
||||
u64 index = 0;
|
||||
@ -5014,12 +5014,11 @@ static int btrfs_create(struct inode *dir, struct dentry *dentry,
|
||||
err = PTR_ERR(inode);
|
||||
goto out_unlock;
|
||||
}
|
||||
drop_inode_on_err = 1;
|
||||
|
||||
err = btrfs_init_inode_security(trans, inode, dir, &dentry->d_name);
|
||||
if (err) {
|
||||
drop_inode = 1;
|
||||
if (err)
|
||||
goto out_unlock;
|
||||
}
|
||||
|
||||
/*
|
||||
* If the active LSM wants to access the inode during
|
||||
@ -5032,16 +5031,16 @@ static int btrfs_create(struct inode *dir, struct dentry *dentry,
|
||||
|
||||
err = btrfs_add_nondir(trans, dir, dentry, inode, 0, index);
|
||||
if (err)
|
||||
drop_inode = 1;
|
||||
else {
|
||||
inode->i_mapping->a_ops = &btrfs_aops;
|
||||
inode->i_mapping->backing_dev_info = &root->fs_info->bdi;
|
||||
BTRFS_I(inode)->io_tree.ops = &btrfs_extent_io_ops;
|
||||
d_instantiate(dentry, inode);
|
||||
}
|
||||
goto out_unlock;
|
||||
|
||||
inode->i_mapping->a_ops = &btrfs_aops;
|
||||
inode->i_mapping->backing_dev_info = &root->fs_info->bdi;
|
||||
BTRFS_I(inode)->io_tree.ops = &btrfs_extent_io_ops;
|
||||
d_instantiate(dentry, inode);
|
||||
|
||||
out_unlock:
|
||||
btrfs_end_transaction(trans, root);
|
||||
if (drop_inode) {
|
||||
if (err && drop_inode_on_err) {
|
||||
inode_dec_link_count(inode);
|
||||
iput(inode);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user