]> git.baikalelectronics.ru Git - kernel.git/commit
drbd: allow bitmap to change during writeout from resync_finished
authorLars Ellenberg <lars.ellenberg@linbit.com>
Wed, 25 Apr 2012 21:06:45 +0000 (23:06 +0200)
committerPhilipp Reisner <philipp.reisner@linbit.com>
Wed, 9 May 2012 13:17:00 +0000 (15:17 +0200)
commitd42ea7c4623d1ccdc5809061ae53b81a5430c8eb
tree368b5bf6ddf7a687303a6e01ce33460dbc096287
parent63fa91e54d0efc3d92297bbfb63ee36011c1bb32
drbd: allow bitmap to change during writeout from resync_finished

Symptom: messages similar to
 "FIXME asender in bm_change_bits_to,
  bitmap locked for 'write from resync_finished' by worker"

If a resync or verify is finished (or aborted), a full bitmap writeout
is triggered.  If we have ongoing local IO, the bitmap may still change
during that writeout, pending and not yet processed acks may cause bits
to be cleared, while new writes may cause bits to be to be set.

To fix this, introduce the drbd_bm_write_copy_pages() variant.

Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
drivers/block/drbd/drbd_bitmap.c
drivers/block/drbd/drbd_int.h
drivers/block/drbd/drbd_main.c