diff options
Diffstat (limited to 'drivers/block/drbd/drbd_bitmap.c')
-rw-r--r-- | drivers/block/drbd/drbd_bitmap.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/block/drbd/drbd_bitmap.c b/drivers/block/drbd/drbd_bitmap.c index 3d6f3d988949..3390716898d5 100644 --- a/drivers/block/drbd/drbd_bitmap.c +++ b/drivers/block/drbd/drbd_bitmap.c | |||
@@ -67,7 +67,7 @@ struct drbd_bitmap { | |||
67 | size_t bm_words; | 67 | size_t bm_words; |
68 | size_t bm_number_of_pages; | 68 | size_t bm_number_of_pages; |
69 | sector_t bm_dev_capacity; | 69 | sector_t bm_dev_capacity; |
70 | struct semaphore bm_change; /* serializes resize operations */ | 70 | struct mutex bm_change; /* serializes resize operations */ |
71 | 71 | ||
72 | atomic_t bm_async_io; | 72 | atomic_t bm_async_io; |
73 | wait_queue_head_t bm_io_wait; | 73 | wait_queue_head_t bm_io_wait; |
@@ -115,7 +115,7 @@ void drbd_bm_lock(struct drbd_conf *mdev, char *why) | |||
115 | return; | 115 | return; |
116 | } | 116 | } |
117 | 117 | ||
118 | trylock_failed = down_trylock(&b->bm_change); | 118 | trylock_failed = !mutex_trylock(&b->bm_change); |
119 | 119 | ||
120 | if (trylock_failed) { | 120 | if (trylock_failed) { |
121 | dev_warn(DEV, "%s going to '%s' but bitmap already locked for '%s' by %s\n", | 121 | dev_warn(DEV, "%s going to '%s' but bitmap already locked for '%s' by %s\n", |
@@ -126,7 +126,7 @@ void drbd_bm_lock(struct drbd_conf *mdev, char *why) | |||
126 | b->bm_task == mdev->receiver.task ? "receiver" : | 126 | b->bm_task == mdev->receiver.task ? "receiver" : |
127 | b->bm_task == mdev->asender.task ? "asender" : | 127 | b->bm_task == mdev->asender.task ? "asender" : |
128 | b->bm_task == mdev->worker.task ? "worker" : "?"); | 128 | b->bm_task == mdev->worker.task ? "worker" : "?"); |
129 | down(&b->bm_change); | 129 | mutex_lock(&b->bm_change); |
130 | } | 130 | } |
131 | if (__test_and_set_bit(BM_LOCKED, &b->bm_flags)) | 131 | if (__test_and_set_bit(BM_LOCKED, &b->bm_flags)) |
132 | dev_err(DEV, "FIXME bitmap already locked in bm_lock\n"); | 132 | dev_err(DEV, "FIXME bitmap already locked in bm_lock\n"); |
@@ -148,7 +148,7 @@ void drbd_bm_unlock(struct drbd_conf *mdev) | |||
148 | 148 | ||
149 | b->bm_why = NULL; | 149 | b->bm_why = NULL; |
150 | b->bm_task = NULL; | 150 | b->bm_task = NULL; |
151 | up(&b->bm_change); | 151 | mutex_unlock(&b->bm_change); |
152 | } | 152 | } |
153 | 153 | ||
154 | /* word offset to long pointer */ | 154 | /* word offset to long pointer */ |
@@ -296,7 +296,7 @@ int drbd_bm_init(struct drbd_conf *mdev) | |||
296 | if (!b) | 296 | if (!b) |
297 | return -ENOMEM; | 297 | return -ENOMEM; |
298 | spin_lock_init(&b->bm_lock); | 298 | spin_lock_init(&b->bm_lock); |
299 | init_MUTEX(&b->bm_change); | 299 | mutex_init(&b->bm_change); |
300 | init_waitqueue_head(&b->bm_io_wait); | 300 | init_waitqueue_head(&b->bm_io_wait); |
301 | 301 | ||
302 | mdev->bitmap = b; | 302 | mdev->bitmap = b; |