aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Mason <chris.mason@oracle.com>2007-04-02 15:43:21 -0400
committerDavid Woodhouse <dwmw2@hera.kernel.org>2007-04-02 15:43:21 -0400
commit2da566edd8ce32ae2952b863ee634bcc2e7d63c1 (patch)
tree35dbd7064dbb6d60924bc1d80703ee2efc72ad03
parent7cfcc17e7f2334a0503331264c1340de4e564c85 (diff)
Btrfs: csum_verify_file_block locking fix
Signed-off-by: Chris Mason <chris.mason@oracle.com>
-rw-r--r--fs/btrfs/disk-io.c1
-rw-r--r--fs/btrfs/extent-tree.c2
-rw-r--r--fs/btrfs/file-item.c2
-rw-r--r--fs/btrfs/super.c1
4 files changed, 2 insertions, 4 deletions
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index a227e94b9e8..39b117a57a5 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -160,7 +160,6 @@ static int csum_tree_block(struct btrfs_root *root, struct buffer_head *bh,
160 int ret; 160 int ret;
161 struct btrfs_node *node; 161 struct btrfs_node *node;
162 162
163 return 0;
164 ret = btrfs_csum_data(root, bh->b_data + BTRFS_CSUM_SIZE, 163 ret = btrfs_csum_data(root, bh->b_data + BTRFS_CSUM_SIZE,
165 bh->b_size - BTRFS_CSUM_SIZE, result); 164 bh->b_size - BTRFS_CSUM_SIZE, result);
166 if (ret) 165 if (ret)
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index d785b721b46..cd40a08dd8a 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -249,8 +249,6 @@ static int __free_extent(struct btrfs_trans_handle *trans, struct btrfs_root
249 btrfs_set_super_blocks_used(info->disk_super, 249 btrfs_set_super_blocks_used(info->disk_super,
250 super_blocks_used - num_blocks); 250 super_blocks_used - num_blocks);
251 ret = btrfs_del_item(trans, extent_root, path); 251 ret = btrfs_del_item(trans, extent_root, path);
252 if (extent_root->fs_info->last_insert.objectid > blocknr)
253 extent_root->fs_info->last_insert.objectid = blocknr;
254 if (ret) 252 if (ret)
255 BUG(); 253 BUG();
256 } 254 }
diff --git a/fs/btrfs/file-item.c b/fs/btrfs/file-item.c
index e7510ac5559..2c98b620c59 100644
--- a/fs/btrfs/file-item.c
+++ b/fs/btrfs/file-item.c
@@ -110,6 +110,7 @@ int btrfs_csum_verify_file_block(struct btrfs_root *root,
110 file_key.offset = offset; 110 file_key.offset = offset;
111 file_key.flags = 0; 111 file_key.flags = 0;
112 btrfs_set_key_type(&file_key, BTRFS_CSUM_ITEM_KEY); 112 btrfs_set_key_type(&file_key, BTRFS_CSUM_ITEM_KEY);
113 mutex_lock(&root->fs_info->fs_mutex);
113 ret = btrfs_search_slot(NULL, root, &file_key, path, 0, 0); 114 ret = btrfs_search_slot(NULL, root, &file_key, path, 0, 0);
114 if (ret) 115 if (ret)
115 goto fail; 116 goto fail;
@@ -123,6 +124,7 @@ int btrfs_csum_verify_file_block(struct btrfs_root *root,
123fail: 124fail:
124 btrfs_release_path(root, path); 125 btrfs_release_path(root, path);
125 btrfs_free_path(path); 126 btrfs_free_path(path);
127 mutex_unlock(&root->fs_info->fs_mutex);
126 return ret; 128 return ret;
127} 129}
128 130
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
index 9fd87f5edbc..fbc26eafc58 100644
--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -1316,7 +1316,6 @@ static void btrfs_destroy_inode(struct inode *inode)
1316 WARN_ON(ei->magic != 0xDEADBEEF); 1316 WARN_ON(ei->magic != 0xDEADBEEF);
1317 WARN_ON(ei->magic2 != 0xDEADBEAF); 1317 WARN_ON(ei->magic2 != 0xDEADBEAF);
1318 WARN_ON(!list_empty(&inode->i_dentry)); 1318 WARN_ON(!list_empty(&inode->i_dentry));
1319 WARN_ON(inode->i_ino == 1);
1320 WARN_ON(inode->i_data.nrpages); 1319 WARN_ON(inode->i_data.nrpages);
1321 1320
1322 ei->magic = 0; 1321 ei->magic = 0;