drbd: fix race on meta-data update
authorLars Ellenberg <lars.ellenberg@linbit.com>
Wed, 1 Sep 2010 13:12:12 +0000 (15:12 +0200)
committerPhilipp Reisner <philipp.reisner@linbit.com>
Thu, 14 Oct 2010 16:38:28 +0000 (18:38 +0200)
commit3f3a9b849d2b703934c07fa17f5eac2dc37c1f6b
tree12aff51d5d92a0642232205b95eb9e55e85dd2bf
parentc518d04fdec3d8b9d6f8b2228040934de9ee6708
drbd: fix race on meta-data update

The race:
drbd_md_mark_dirty()
drbd_md_sync()
if (!test_and_clear_bit(MD_DIRTY, &mdev->flags))
return;
drbd_md_sync_page_io(mdev, mdev->ldev, sector, WRITE)
  ==> RACE
clear_bit(MD_DIRTY, &mdev->flags); <== spurious

Fixed by removing the spurious clear_bit.

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