summaryrefslogtreecommitdiffstats
path: root/drivers/block/drbd
diff options
context:
space:
mode:
authorLars Ellenberg <lars.ellenberg@linbit.com>2009-11-16 15:48:54 +0100
committerPhilipp Reisner <philipp.reisner@linbit.com>2009-11-24 18:11:05 +0100
commit6c6c7951be7652f86109f2193651b78d90907c0d (patch)
treecdac6aeaaf0f96288ffcc0f8338eb41f596af68a /drivers/block/drbd
parentcciss: change Cmd_sg_list.sg_chain_dma type to dma_addr_t (diff)
downloadlinux-6c6c7951be7652f86109f2193651b78d90907c0d.tar.xz
linux-6c6c7951be7652f86109f2193651b78d90907c0d.zip
fix in-kernel configuration serialization
this is uncritical, as we still also serialize in userland, but to correctly serialize on the CONFIG_PENDING bit, it must be wait_event(state_wait, \!test_and_set_bit) Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com> Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
Diffstat (limited to 'drivers/block/drbd')
-rw-r--r--drivers/block/drbd/drbd_nl.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/block/drbd/drbd_nl.c b/drivers/block/drbd/drbd_nl.c
index e2a5875a07b1..436a090b532b 100644
--- a/drivers/block/drbd/drbd_nl.c
+++ b/drivers/block/drbd/drbd_nl.c
@@ -733,7 +733,7 @@ void drbd_setup_queue_param(struct drbd_conf *mdev, unsigned int max_seg_s) __mu
*/
static void drbd_reconfig_start(struct drbd_conf *mdev)
{
- wait_event(mdev->state_wait, test_and_set_bit(CONFIG_PENDING, &mdev->flags));
+ wait_event(mdev->state_wait, !test_and_set_bit(CONFIG_PENDING, &mdev->flags));
wait_event(mdev->state_wait, !test_bit(DEVICE_DYING, &mdev->flags));
drbd_thread_start(&mdev->worker);
}