diff options
author | Chris Mason <chris.mason@oracle.com> | 2007-04-02 15:43:21 -0400 |
---|---|---|
committer | David Woodhouse <dwmw2@hera.kernel.org> | 2007-04-02 15:43:21 -0400 |
commit | 2da566edd8ce32ae2952b863ee634bcc2e7d63c1 (patch) | |
tree | 35dbd7064dbb6d60924bc1d80703ee2efc72ad03 | |
parent | 7cfcc17e7f2334a0503331264c1340de4e564c85 (diff) |
Btrfs: csum_verify_file_block locking fix
Signed-off-by: Chris Mason <chris.mason@oracle.com>
-rw-r--r-- | fs/btrfs/disk-io.c | 1 | ||||
-rw-r--r-- | fs/btrfs/extent-tree.c | 2 | ||||
-rw-r--r-- | fs/btrfs/file-item.c | 2 | ||||
-rw-r--r-- | fs/btrfs/super.c | 1 |
4 files changed, 2 insertions, 4 deletions
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index a227e94b9e88..39b117a57a54 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 d785b721b461..cd40a08dd8a6 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 e7510ac5559d..2c98b620c594 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, | |||
123 | fail: | 124 | fail: |
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 9fd87f5edbc9..fbc26eafc58c 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; |