int                     refcnt;
 };
 
+static DEFINE_MUTEX(blk_holder_mutex);
+
 static struct bd_holder_disk *bd_find_holder_disk(struct block_device *bdev,
                                                  struct gendisk *disk)
 {
        kobject_get(bdev->bd_holder_dir);
        mutex_unlock(&bdev->bd_disk->open_mutex);
 
-       mutex_lock(&disk->open_mutex);
+       mutex_lock(&blk_holder_mutex);
        WARN_ON_ONCE(!bdev->bd_holder);
 
        holder = bd_find_holder_disk(bdev, disk);
                goto out_del_symlink;
        list_add(&holder->list, &disk->slave_bdevs);
 
-       mutex_unlock(&disk->open_mutex);
+       mutex_unlock(&blk_holder_mutex);
        return 0;
 
 out_del_symlink:
 out_free_holder:
        kfree(holder);
 out_unlock:
-       mutex_unlock(&disk->open_mutex);
+       mutex_unlock(&blk_holder_mutex);
        if (ret)
                kobject_put(bdev->bd_holder_dir);
        return ret;
        if (WARN_ON_ONCE(!disk->slave_dir))
                return;
 
-       mutex_lock(&disk->open_mutex);
+       mutex_lock(&blk_holder_mutex);
        holder = bd_find_holder_disk(bdev, disk);
        if (!WARN_ON_ONCE(holder == NULL) && !--holder->refcnt) {
                del_symlink(disk->slave_dir, bdev_kobj(bdev));
                list_del_init(&holder->list);
                kfree(holder);
        }
-       mutex_unlock(&disk->open_mutex);
+       mutex_unlock(&blk_holder_mutex);
 }
 EXPORT_SYMBOL_GPL(bd_unlink_disk_holder);