block: drbd: Convert semaphore to mutex
The bm_change semaphore is semantically a mutex. Convert it to a real mutex. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
This commit is contained in:
parent
881245dcff
commit
8a03ae2a5b
@ -66,7 +66,7 @@ struct drbd_bitmap {
|
|||||||
size_t bm_words;
|
size_t bm_words;
|
||||||
size_t bm_number_of_pages;
|
size_t bm_number_of_pages;
|
||||||
sector_t bm_dev_capacity;
|
sector_t bm_dev_capacity;
|
||||||
struct semaphore bm_change; /* serializes resize operations */
|
struct mutex bm_change; /* serializes resize operations */
|
||||||
|
|
||||||
atomic_t bm_async_io;
|
atomic_t bm_async_io;
|
||||||
wait_queue_head_t bm_io_wait;
|
wait_queue_head_t bm_io_wait;
|
||||||
@ -114,7 +114,7 @@ void drbd_bm_lock(struct drbd_conf *mdev, char *why)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
trylock_failed = down_trylock(&b->bm_change);
|
trylock_failed = !mutex_trylock(&b->bm_change);
|
||||||
|
|
||||||
if (trylock_failed) {
|
if (trylock_failed) {
|
||||||
dev_warn(DEV, "%s going to '%s' but bitmap already locked for '%s' by %s\n",
|
dev_warn(DEV, "%s going to '%s' but bitmap already locked for '%s' by %s\n",
|
||||||
@ -125,7 +125,7 @@ void drbd_bm_lock(struct drbd_conf *mdev, char *why)
|
|||||||
b->bm_task == mdev->receiver.task ? "receiver" :
|
b->bm_task == mdev->receiver.task ? "receiver" :
|
||||||
b->bm_task == mdev->asender.task ? "asender" :
|
b->bm_task == mdev->asender.task ? "asender" :
|
||||||
b->bm_task == mdev->worker.task ? "worker" : "?");
|
b->bm_task == mdev->worker.task ? "worker" : "?");
|
||||||
down(&b->bm_change);
|
mutex_lock(&b->bm_change);
|
||||||
}
|
}
|
||||||
if (__test_and_set_bit(BM_LOCKED, &b->bm_flags))
|
if (__test_and_set_bit(BM_LOCKED, &b->bm_flags))
|
||||||
dev_err(DEV, "FIXME bitmap already locked in bm_lock\n");
|
dev_err(DEV, "FIXME bitmap already locked in bm_lock\n");
|
||||||
@ -147,7 +147,7 @@ void drbd_bm_unlock(struct drbd_conf *mdev)
|
|||||||
|
|
||||||
b->bm_why = NULL;
|
b->bm_why = NULL;
|
||||||
b->bm_task = NULL;
|
b->bm_task = NULL;
|
||||||
up(&b->bm_change);
|
mutex_unlock(&b->bm_change);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* word offset to long pointer */
|
/* word offset to long pointer */
|
||||||
@ -295,7 +295,7 @@ int drbd_bm_init(struct drbd_conf *mdev)
|
|||||||
if (!b)
|
if (!b)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
spin_lock_init(&b->bm_lock);
|
spin_lock_init(&b->bm_lock);
|
||||||
init_MUTEX(&b->bm_change);
|
mutex_init(&b->bm_change);
|
||||||
init_waitqueue_head(&b->bm_io_wait);
|
init_waitqueue_head(&b->bm_io_wait);
|
||||||
|
|
||||||
mdev->bitmap = b;
|
mdev->bitmap = b;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user