From 85756620e146b3e48cb3d63baab3ae864cdf936c Mon Sep 17 00:00:00 2001 From: Liu Bo Date: Wed, 14 Nov 2012 14:35:30 +0000 Subject: [PATCH] --- yaml --- r: 346673 b: refs/heads/master c: d25628bdd66aedd6e07729d8dc6c8ee846d66d72 h: refs/heads/master i: 346671: ac44d1c308ee6f044a2ceb89551fb62ddedc3fe4 v: v3 --- [refs] | 2 +- trunk/fs/btrfs/volumes.c | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 5bbe4afe9f40..bc900644b16f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b53d3f5db2b79637acadc06a330db6c2c60863f5 +refs/heads/master: d25628bdd66aedd6e07729d8dc6c8ee846d66d72 diff --git a/trunk/fs/btrfs/volumes.c b/trunk/fs/btrfs/volumes.c index db79fb7e7e91..92e586bc8004 100644 --- a/trunk/fs/btrfs/volumes.c +++ b/trunk/fs/btrfs/volumes.c @@ -1681,16 +1681,17 @@ int btrfs_init_new_device(struct btrfs_root *root, char *device_path) filemap_write_and_wait(bdev->bd_inode->i_mapping); devices = &root->fs_info->fs_devices->devices; - /* - * we have the volume lock, so we don't need the extra - * device list mutex while reading the list here. - */ + + mutex_lock(&root->fs_info->fs_devices->device_list_mutex); list_for_each_entry(device, devices, dev_list) { if (device->bdev == bdev) { ret = -EEXIST; + mutex_unlock( + &root->fs_info->fs_devices->device_list_mutex); goto error; } } + mutex_unlock(&root->fs_info->fs_devices->device_list_mutex); device = kzalloc(sizeof(*device), GFP_NOFS); if (!device) {