7e1e97ef29
1 OBS-URL: https://build.opensuse.org/request/show/318290 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=44
59 lines
1.9 KiB
Diff
59 lines
1.9 KiB
Diff
From 88d3c5ee059952db304f5f3f82ca4c5e4a72a7a5 Mon Sep 17 00:00:00 2001
|
|
From: Nick Wang <nwang@suse.com>
|
|
Date: Fri, 10 Jul 2015 18:25:19 +0800
|
|
Subject: [Patch v2 07/10] drbd: Flags for background drbd device work
|
|
|
|
Background drbd device work for zeroing out device.
|
|
|
|
Signed-off-by: Nick Wang <nwang@suse.com>
|
|
CC: Philipp Reisner <philipp.reisner@linbit.com>
|
|
CC: Lars Ellenberg <lars.ellenberg@linbit.com>
|
|
CC: drbd-dev@lists.linbit.com
|
|
CC: linux-kernel@vger.kernel.org
|
|
---
|
|
drbd/drbd_int.h | 3 +++
|
|
drbd/drbd_worker.c | 6 ++++++
|
|
2 files changed, 9 insertions(+)
|
|
|
|
diff --git a/drbd/drbd_int.h b/drbd/drbd_int.h
|
|
index dd680a9..287ffd7 100644
|
|
--- a/drbd/drbd_int.h
|
|
+++ b/drbd/drbd_int.h
|
|
@@ -622,6 +622,9 @@ enum {
|
|
RS_START, /* tell worker to start resync/OV */
|
|
RS_PROGRESS, /* tell worker that resync made significant progress */
|
|
RS_DONE, /* tell worker that resync is done */
|
|
+ P_ZERO_START, /* tell worker to zero out device */
|
|
+ S_ZERO_START, /* tell worker to zero out device as requested*/
|
|
+
|
|
/* used for zero out device */
|
|
ZERO_DONE, /* succeed on zero out a device */
|
|
ZERO_FAIL, /* fail to zero out a device */
|
|
diff --git a/drbd/drbd_worker.c b/drbd/drbd_worker.c
|
|
index 293aa27..23e82c1 100644
|
|
--- a/drbd/drbd_worker.c
|
|
+++ b/drbd/drbd_worker.c
|
|
@@ -2070,6 +2070,10 @@ static void do_device_work(struct drbd_device *device, const unsigned long todo)
|
|
drbd_ldev_destroy(device);
|
|
if (test_bit(RS_START, &todo))
|
|
do_start_resync(device);
|
|
+ if (test_bit(P_ZERO_START, &todo))
|
|
+ require_zero_out_local_device(device);
|
|
+ if (test_bit(S_ZERO_START, &todo))
|
|
+ receive_zero_out_local_device(device);
|
|
}
|
|
|
|
#define DRBD_DEVICE_WORK_MASK \
|
|
@@ -2079,6 +2083,8 @@ static void do_device_work(struct drbd_device *device, const unsigned long todo)
|
|
|(1UL << RS_START) \
|
|
|(1UL << RS_PROGRESS) \
|
|
|(1UL << RS_DONE) \
|
|
+ |(1UL << P_ZERO_START) \
|
|
+ |(1UL << S_ZERO_START) \
|
|
)
|
|
|
|
static unsigned long get_work_bits(unsigned long *flags)
|
|
--
|
|
1.8.4.5
|
|
|