From: Miao Xie Date: Wed, 3 Sep 2014 13:35:47 +0000 (+0800) Subject: Btrfs: modify rw_devices counter under chunk_mutex context X-Git-Tag: firefly_0821_release~176^2~2834^2~44 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=c3929c3624e1764855e5a452728aec201b18b42a;p=firefly-linux-kernel-4.4.55.git Btrfs: modify rw_devices counter under chunk_mutex context rw_devices counter is often used to tune the profile when doing chunk allocation, so we should modify it under the chunk_mutex context to avoid getting wrong chunk profile. Signed-off-by: Miao Xie Signed-off-by: Chris Mason --- diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index 57a7f331eb3e..77d7fbc0fa47 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -1649,8 +1649,8 @@ int btrfs_rm_device(struct btrfs_root *root, char *device_path) if (device->writeable) { lock_chunks(root); list_del_init(&device->dev_alloc_list); + device->fs_devices->rw_devices--; unlock_chunks(root); - root->fs_info->fs_devices->rw_devices--; clear_super = true; } @@ -1795,8 +1795,8 @@ error_undo: lock_chunks(root); list_add(&device->dev_alloc_list, &root->fs_info->fs_devices->alloc_list); + device->fs_devices->rw_devices++; unlock_chunks(root); - root->fs_info->fs_devices->rw_devices++; } goto error_brelse; }