diff options
author | NeilBrown <neilb@suse.de> | 2011-02-21 18:25:57 +1100 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2011-02-21 18:25:57 +1100 |
commit | da9cf5050a2e3dbc3cf26a8d908482eb4485ed49 (patch) | |
tree | d5e7ea4ef419d07d294e88b47a4aaf2676a605eb /drivers/md/linear.c | |
parent | 8f5f02c460b7ca74ce55ce126ce0c1e58a3f923d (diff) | |
download | blackbird-op-linux-da9cf5050a2e3dbc3cf26a8d908482eb4485ed49.tar.gz blackbird-op-linux-da9cf5050a2e3dbc3cf26a8d908482eb4485ed49.zip |
md: avoid spinlock problem in blk_throtl_exit
blk_throtl_exit assumes that ->queue_lock still exists,
so make sure that it does.
To do this, we stop redirecting ->queue_lock to conf->device_lock
and leave it pointing where it is initialised - __queue_lock.
As the blk_plug functions check the ->queue_lock is held, we now
take that spin_lock explicitly around the plug functions. We don't
need the locking, just the warning removal.
This is needed for any kernel with the blk_throtl code, which is
which is 2.6.37 and later.
Cc: stable@kernel.org
Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'drivers/md/linear.c')
-rw-r--r-- | drivers/md/linear.c | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/drivers/md/linear.c b/drivers/md/linear.c index 8a2f767f26d8..0ed7f6bc2a7f 100644 --- a/drivers/md/linear.c +++ b/drivers/md/linear.c @@ -216,7 +216,6 @@ static int linear_run (mddev_t *mddev) if (md_check_no_bitmap(mddev)) return -EINVAL; - mddev->queue->queue_lock = &mddev->queue->__queue_lock; conf = linear_conf(mddev, mddev->raid_disks); if (!conf) |