summaryrefslogtreecommitdiffstats
path: root/drivers/block/drbd/drbd_nl.c
diff options
context:
space:
mode:
authorPhilipp Reisner2012-08-08 21:19:09 +0200
committerPhilipp Reisner2012-08-16 17:17:35 +0200
commitd1aa4d04da8de5c89d73859e077d89c4c71d8ed1 (patch)
tree899936a815b7f40fe65aa0bc1b832ebef7a89802 /drivers/block/drbd/drbd_nl.c
parentdrbd: Finish requests that completed while IO was frozen (diff)
downloadkernel-qcow2-linux-d1aa4d04da8de5c89d73859e077d89c4c71d8ed1.tar.gz
kernel-qcow2-linux-d1aa4d04da8de5c89d73859e077d89c4c71d8ed1.tar.xz
kernel-qcow2-linux-d1aa4d04da8de5c89d73859e077d89c4c71d8ed1.zip
drbd: Write all pages of the bitmap after an online resize
We need to write the whole bitmap after we moved the meta data due to an online resize operation. With the support for one peta byte devices bitmap IO was optimized to only write out touched pages. This optimization must be turned off when writing the bitmap after an online resize. This issue was introduced with drbd-8.3.10. The impact of this bug is that after an online resize, the next resync could become larger than expected. Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com> Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
Diffstat (limited to 'drivers/block/drbd/drbd_nl.c')
-rw-r--r--drivers/block/drbd/drbd_nl.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/block/drbd/drbd_nl.c b/drivers/block/drbd/drbd_nl.c
index fb9dce8daa24..edb490aad8b4 100644
--- a/drivers/block/drbd/drbd_nl.c
+++ b/drivers/block/drbd/drbd_nl.c
@@ -674,8 +674,8 @@ enum determine_dev_size drbd_determine_dev_size(struct drbd_conf *mdev, enum dds
la_size_changed && md_moved ? "size changed and md moved" :
la_size_changed ? "size changed" : "md moved");
/* next line implicitly does drbd_suspend_io()+drbd_resume_io() */
- err = drbd_bitmap_io(mdev, &drbd_bm_write,
- "size changed", BM_LOCKED_MASK);
+ err = drbd_bitmap_io(mdev, md_moved ? &drbd_bm_write_all : &drbd_bm_write,
+ "size changed", BM_LOCKED_MASK);
if (err) {
rv = dev_size_error;
goto out;