提交 2da566ed 编写于 作者: C Chris Mason 提交者: David Woodhouse

Btrfs: csum_verify_file_block locking fix

Signed-off-by: NChris Mason <chris.mason@oracle.com>
上级 7cfcc17e
...@@ -160,7 +160,6 @@ static int csum_tree_block(struct btrfs_root *root, struct buffer_head *bh, ...@@ -160,7 +160,6 @@ static int csum_tree_block(struct btrfs_root *root, struct buffer_head *bh,
int ret; int ret;
struct btrfs_node *node; struct btrfs_node *node;
return 0;
ret = btrfs_csum_data(root, bh->b_data + BTRFS_CSUM_SIZE, ret = btrfs_csum_data(root, bh->b_data + BTRFS_CSUM_SIZE,
bh->b_size - BTRFS_CSUM_SIZE, result); bh->b_size - BTRFS_CSUM_SIZE, result);
if (ret) if (ret)
......
...@@ -249,8 +249,6 @@ static int __free_extent(struct btrfs_trans_handle *trans, struct btrfs_root ...@@ -249,8 +249,6 @@ static int __free_extent(struct btrfs_trans_handle *trans, struct btrfs_root
btrfs_set_super_blocks_used(info->disk_super, btrfs_set_super_blocks_used(info->disk_super,
super_blocks_used - num_blocks); super_blocks_used - num_blocks);
ret = btrfs_del_item(trans, extent_root, path); ret = btrfs_del_item(trans, extent_root, path);
if (extent_root->fs_info->last_insert.objectid > blocknr)
extent_root->fs_info->last_insert.objectid = blocknr;
if (ret) if (ret)
BUG(); BUG();
} }
......
...@@ -110,6 +110,7 @@ int btrfs_csum_verify_file_block(struct btrfs_root *root, ...@@ -110,6 +110,7 @@ int btrfs_csum_verify_file_block(struct btrfs_root *root,
file_key.offset = offset; file_key.offset = offset;
file_key.flags = 0; file_key.flags = 0;
btrfs_set_key_type(&file_key, BTRFS_CSUM_ITEM_KEY); btrfs_set_key_type(&file_key, BTRFS_CSUM_ITEM_KEY);
mutex_lock(&root->fs_info->fs_mutex);
ret = btrfs_search_slot(NULL, root, &file_key, path, 0, 0); ret = btrfs_search_slot(NULL, root, &file_key, path, 0, 0);
if (ret) if (ret)
goto fail; goto fail;
...@@ -123,6 +124,7 @@ int btrfs_csum_verify_file_block(struct btrfs_root *root, ...@@ -123,6 +124,7 @@ int btrfs_csum_verify_file_block(struct btrfs_root *root,
fail: fail:
btrfs_release_path(root, path); btrfs_release_path(root, path);
btrfs_free_path(path); btrfs_free_path(path);
mutex_unlock(&root->fs_info->fs_mutex);
return ret; return ret;
} }
...@@ -1316,7 +1316,6 @@ static void btrfs_destroy_inode(struct inode *inode) ...@@ -1316,7 +1316,6 @@ static void btrfs_destroy_inode(struct inode *inode)
WARN_ON(ei->magic != 0xDEADBEEF); WARN_ON(ei->magic != 0xDEADBEEF);
WARN_ON(ei->magic2 != 0xDEADBEAF); WARN_ON(ei->magic2 != 0xDEADBEAF);
WARN_ON(!list_empty(&inode->i_dentry)); WARN_ON(!list_empty(&inode->i_dentry));
WARN_ON(inode->i_ino == 1);
WARN_ON(inode->i_data.nrpages); WARN_ON(inode->i_data.nrpages);
ei->magic = 0; ei->magic = 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册