mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-05 10:29:37 +00:00
Btrfs: do not check inode's runtime flags under root->orphan_lock
It's not necessary to hold ->orphan_lock when checking inode's runtime flags. Signed-off-by: Liu Bo <bo.li.liu@oracle.com> Reviewed-by: Josef Bacik <jbacik@fb.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
bc5511d0ed
commit
3d5addafd0
1 changed files with 12 additions and 9 deletions
|
@ -3355,14 +3355,6 @@ int btrfs_orphan_add(struct btrfs_trans_handle *trans,
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
spin_lock(&root->orphan_lock);
|
|
||||||
if (!root->orphan_block_rsv) {
|
|
||||||
root->orphan_block_rsv = block_rsv;
|
|
||||||
} else if (block_rsv) {
|
|
||||||
btrfs_free_block_rsv(fs_info, block_rsv);
|
|
||||||
block_rsv = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!test_and_set_bit(BTRFS_INODE_HAS_ORPHAN_ITEM,
|
if (!test_and_set_bit(BTRFS_INODE_HAS_ORPHAN_ITEM,
|
||||||
&inode->runtime_flags)) {
|
&inode->runtime_flags)) {
|
||||||
#if 0
|
#if 0
|
||||||
|
@ -3377,12 +3369,23 @@ int btrfs_orphan_add(struct btrfs_trans_handle *trans,
|
||||||
insert = 1;
|
insert = 1;
|
||||||
#endif
|
#endif
|
||||||
insert = 1;
|
insert = 1;
|
||||||
atomic_inc(&root->orphan_inodes);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!test_and_set_bit(BTRFS_INODE_ORPHAN_META_RESERVED,
|
if (!test_and_set_bit(BTRFS_INODE_ORPHAN_META_RESERVED,
|
||||||
&inode->runtime_flags))
|
&inode->runtime_flags))
|
||||||
reserve = 1;
|
reserve = 1;
|
||||||
|
|
||||||
|
spin_lock(&root->orphan_lock);
|
||||||
|
/* If someone has created ->orphan_block_rsv, be happy to use it. */
|
||||||
|
if (!root->orphan_block_rsv) {
|
||||||
|
root->orphan_block_rsv = block_rsv;
|
||||||
|
} else if (block_rsv) {
|
||||||
|
btrfs_free_block_rsv(fs_info, block_rsv);
|
||||||
|
block_rsv = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (insert)
|
||||||
|
atomic_inc(&root->orphan_inodes);
|
||||||
spin_unlock(&root->orphan_lock);
|
spin_unlock(&root->orphan_lock);
|
||||||
|
|
||||||
/* grab metadata reservation from transaction handle */
|
/* grab metadata reservation from transaction handle */
|
||||||
|
|
Loading…
Reference in a new issue