Btrfs: Keep fs_mutex during reads done by snapshot deletion
There was an optimization to drop the fs_mutex when doing snapshot deletion reads, but this can lead to false positives on checksumming errors. Keep the lock for now. Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
parent
140dfd00ae
commit
ecbe2402cb
1 changed files with 4 additions and 3 deletions
|
@ -2046,11 +2046,12 @@ static int noinline walk_down_tree(struct btrfs_trans_handle *trans,
|
|||
if (!next || !btrfs_buffer_uptodate(next)) {
|
||||
free_extent_buffer(next);
|
||||
reada_walk_down(root, cur, path->slots[*level]);
|
||||
mutex_unlock(&root->fs_info->fs_mutex);
|
||||
next = read_tree_block(root, bytenr, blocksize);
|
||||
mutex_lock(&root->fs_info->fs_mutex);
|
||||
|
||||
/* we dropped the lock, check one more time */
|
||||
/* we used to drop the lock above, keep the
|
||||
* code to double check so that we won't forget
|
||||
* when we drop the lock again in the future
|
||||
*/
|
||||
ret = lookup_extent_ref(trans, root, bytenr,
|
||||
blocksize, &refs);
|
||||
BUG_ON(ret);
|
||||
|
|
Loading…
Reference in a new issue