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
66 lines
2.0 KiB
Diff
66 lines
2.0 KiB
Diff
From 94d1f879305b472aff6009ba4c4f08b9d70f1cf1 Mon Sep 17 00:00:00 2001
|
|
From: Nick Wang <nwang@suse.com>
|
|
Date: Fri, 10 Jul 2015 17:34:46 +0800
|
|
Subject: [Patch v2 03/10] drbd: A function to zero out drbd backing device
|
|
|
|
The function can be used to zero out the whole
|
|
backing 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 | 1 +
|
|
drbd/drbd_worker.c | 21 +++++++++++++++++++++
|
|
2 files changed, 22 insertions(+)
|
|
|
|
diff --git a/drbd/drbd_int.h b/drbd/drbd_int.h
|
|
index a234228..9ecf971 100644
|
|
--- a/drbd/drbd_int.h
|
|
+++ b/drbd/drbd_int.h
|
|
@@ -1662,6 +1662,7 @@ extern void drbd_send_acks_wf(struct work_struct *ws);
|
|
extern bool drbd_rs_c_min_rate_throttle(struct drbd_device *device);
|
|
extern bool drbd_rs_should_slow_down(struct drbd_device *device, sector_t sector,
|
|
bool throttle_if_app_is_waiting);
|
|
+extern int zero_out_local_device(struct drbd_device *device);
|
|
extern int drbd_submit_peer_request(struct drbd_device *,
|
|
struct drbd_peer_request *, const unsigned,
|
|
const int);
|
|
diff --git a/drbd/drbd_worker.c b/drbd/drbd_worker.c
|
|
index 2a15aeb..50564f5 100644
|
|
--- a/drbd/drbd_worker.c
|
|
+++ b/drbd/drbd_worker.c
|
|
@@ -1653,6 +1653,27 @@ void drbd_rs_controller_reset(struct drbd_device *device)
|
|
rcu_read_unlock();
|
|
}
|
|
|
|
+/**
|
|
+ * zero_out_local_device()
|
|
+ * @device: DRBD device.
|
|
+ *
|
|
+ * Description:
|
|
+ * Zero out drbd backing device when creating new uuid.
|
|
+ *
|
|
+**/
|
|
+int zero_out_local_device(struct drbd_device *device)
|
|
+{
|
|
+ struct block_device *bdev;
|
|
+
|
|
+ bdev = device->ldev->backing_bdev;
|
|
+ if (device->ldev->known_size != drbd_get_capacity(bdev))
|
|
+ device->ldev->known_size = drbd_get_capacity(bdev);
|
|
+
|
|
+ /* zero out the backing device */
|
|
+ return blkdev_issue_zeroout(bdev, 0,
|
|
+ device->ldev->known_size, GFP_NOIO, false);
|
|
+}
|
|
+
|
|
void start_resync_timer_fn(unsigned long data)
|
|
{
|
|
struct drbd_device *device = (struct drbd_device *) data;
|
|
--
|
|
1.8.4.5
|
|
|