diff options
| author | Jeff Mahoney <[email protected]> | 2016-09-20 12:50:21 +0000 |
|---|---|---|
| committer | David Sterba <[email protected]> | 2016-09-26 16:08:44 +0000 |
| commit | cea67ab92d3d4da9f2b4141d87cb8664757daca0 (patch) | |
| tree | 75f6575c0d9aecef3d981ff0083222b2c4932be9 /fs/btrfs/print-tree.c | |
| parent | Btrfs: kill BUG_ON in run_delayed_tree_ref (diff) | |
| download | kernel-cea67ab92d3d4da9f2b4141d87cb8664757daca0.tar.gz kernel-cea67ab92d3d4da9f2b4141d87cb8664757daca0.zip | |
btrfs: clean the old superblocks before freeing the device
btrfs_rm_device frees the block device but then re-opens it using
the saved device name. A race exists between the close and the
re-open that allows the block size to be changed. The result
is getting stuck forever in the reclaim loop in __getblk_slow.
This patch moves the superblock cleanup before closing the block
device, which is also consistent with other callers. We also don't
need a private copy of dev_name as the whole routine operates under
the uuid_mutex.
Signed-off-by: Jeff Mahoney <[email protected]>
Reviewed-by: David Sterba <[email protected]>
Signed-off-by: David Sterba <[email protected]>
Diffstat (limited to 'fs/btrfs/print-tree.c')
0 files changed, 0 insertions, 0 deletions
