summaryrefslogtreecommitdiff
path: root/fs/btrfs/extent_io.c
diff options
context:
space:
mode:
authorMark Fasheh <mfasheh@suse.de>2014-08-18 14:01:17 -0700
committerChris Mason <clm@fb.com>2014-09-17 13:38:19 -0700
commit0b4699dcb65c2cff793210b07f40b98c2d423a43 (patch)
tree5acf4f368d2245924049f2f6276e20f43065c5ad /fs/btrfs/extent_io.c
parentb7831b20f32019b741eb8fe3435c2516e13e0c4a (diff)
downloadlwn-0b4699dcb65c2cff793210b07f40b98c2d423a43.tar.gz
lwn-0b4699dcb65c2cff793210b07f40b98c2d423a43.zip
btrfs: don't go readonly on existing qgroup items
btrfs_drop_snapshot() leaves subvolume qgroup items on disk after completion. This can cause problems with snapshot creation. If a new snapshot tries to claim the deleted subvolumes id, btrfs will get -EEXIST from add_qgroup_item() and go read-only. The following commands will reproduce this problem (assume btrfs is on /dev/sda and is mounted at /btrfs) mkfs.btrfs -f /dev/sda mount -t btrfs /dev/sda /btrfs/ btrfs quota enable /btrfs/ btrfs su sna /btrfs/ /btrfs/snap btrfs su de /btrfs/snap sleep 45 umount /btrfs/ mount -t btrfs /dev/sda /btrfs/ We can fix this by catching -EEXIST in add_qgroup_item() and initializing the existing items. We have the problem of orphaned relation items being on disk from an old snapshot but that is outside the scope of this patch. Signed-off-by: Mark Fasheh <mfasheh@suse.de> Signed-off-by: Chris Mason <clm@fb.com>
Diffstat (limited to 'fs/btrfs/extent_io.c')
0 files changed, 0 insertions, 0 deletions