Call mutex_lock() instead of mutex_trylock() followed by mutex_lock(). Remove the code that depends on device->bitmap == NULL because this can't happen. All drbd_bm_{lock,unlock}() callers guarantee that the device->bitmap pointer is valid. Suggested-by: Christoph Hellwig Signed-off-by: Bart Van Assche --- drivers/block/drbd/drbd_bitmap.c | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/drivers/block/drbd/drbd_bitmap.c b/drivers/block/drbd/drbd_bitmap.c index 1c68f1774e28..e332a96fe90c 100644 --- a/drivers/block/drbd/drbd_bitmap.c +++ b/drivers/block/drbd/drbd_bitmap.c @@ -124,22 +124,8 @@ static void __bm_print_lock_info(struct drbd_device *device, const char *func) void drbd_bm_lock(struct drbd_device *device, char *why, enum bm_flag flags) { struct drbd_bitmap *b = device->bitmap; - int trylock_failed; - if (!b) { - drbd_err(device, "FIXME no bitmap in drbd_bm_lock!?\n"); - return; - } - - trylock_failed = !mutex_trylock(&b->bm_change); - - if (trylock_failed) { - drbd_warn(device, "%s[%d] going to '%s' but bitmap already locked for '%s' by %s[%d]\n", - current->comm, task_pid_nr(current), - why, b->bm_why ?: "?", - b->bm_task->comm, task_pid_nr(b->bm_task)); - mutex_lock(&b->bm_change); - } + mutex_lock(&b->bm_change); if (BM_LOCKED_MASK & b->bm_flags) drbd_err(device, "FIXME bitmap already locked in bm_lock\n"); b->bm_flags |= flags & BM_LOCKED_MASK; @@ -151,10 +137,6 @@ void drbd_bm_lock(struct drbd_device *device, char *why, enum bm_flag flags) void drbd_bm_unlock(struct drbd_device *device) { struct drbd_bitmap *b = device->bitmap; - if (!b) { - drbd_err(device, "FIXME no bitmap in drbd_bm_unlock!?\n"); - return; - } if (!(BM_LOCKED_MASK & device->bitmap->bm_flags)) drbd_err(device, "FIXME bitmap not locked in bm_unlock\n");