From: Andrew Morton my life sucks. Cc: Neil Brown Cc: Jens Axboe Signed-off-by: Andrew Morton --- drivers/md/bitmap.c | 22 +--------------------- include/linux/raid/bitmap.h | 1 - 2 files changed, 1 insertion(+), 22 deletions(-) diff -puN drivers/md/bitmap.c~revert-md-avoid-possible-bug_on-in-md-bitmap-handling-for-git-block drivers/md/bitmap.c --- a/drivers/md/bitmap.c~revert-md-avoid-possible-bug_on-in-md-bitmap-handling-for-git-block +++ a/drivers/md/bitmap.c @@ -1160,22 +1160,6 @@ int bitmap_startwrite(struct bitmap *bit return 0; } - if (unlikely((*bmc & COUNTER_MAX) == COUNTER_MAX)) { - DEFINE_WAIT(__wait); - /* note that it is safe to do the prepare_to_wait - * after the test as long as we do it before dropping - * the spinlock. - */ - prepare_to_wait(&bitmap->overflow_wait, &__wait, - TASK_UNINTERRUPTIBLE); - spin_unlock_irq(&bitmap->lock); - bitmap->mddev->queue - ->unplug_fn(bitmap->mddev->queue); - schedule(); - finish_wait(&bitmap->overflow_wait, &__wait); - continue; - } - switch(*bmc) { case 0: bitmap_file_set_bit(bitmap, offset); @@ -1185,7 +1169,7 @@ int bitmap_startwrite(struct bitmap *bit case 1: *bmc = 2; } - + BUG_ON((*bmc & COUNTER_MAX) == COUNTER_MAX); (*bmc)++; spin_unlock_irq(&bitmap->lock); @@ -1223,9 +1207,6 @@ void bitmap_endwrite(struct bitmap *bitm if (!success && ! (*bmc & NEEDED_MASK)) *bmc |= NEEDED_MASK; - if ((*bmc & COUNTER_MAX) == COUNTER_MAX) - wake_up(&bitmap->overflow_wait); - (*bmc)--; if (*bmc <= 2) { set_page_attr(bitmap, @@ -1450,7 +1431,6 @@ int bitmap_create(mddev_t *mddev) spin_lock_init(&bitmap->lock); atomic_set(&bitmap->pending_writes, 0); init_waitqueue_head(&bitmap->write_wait); - init_waitqueue_head(&bitmap->overflow_wait); bitmap->mddev = mddev; diff -puN include/linux/raid/bitmap.h~revert-md-avoid-possible-bug_on-in-md-bitmap-handling-for-git-block include/linux/raid/bitmap.h --- a/include/linux/raid/bitmap.h~revert-md-avoid-possible-bug_on-in-md-bitmap-handling-for-git-block +++ a/include/linux/raid/bitmap.h @@ -247,7 +247,6 @@ struct bitmap { atomic_t pending_writes; /* pending writes to the bitmap file */ wait_queue_head_t write_wait; - wait_queue_head_t overflow_wait; }; _