[Drbd-dev] [PATCH] drbdadm: Fix does not allocate bitmap for stacked res

Nick Wang nwang at suse.com
Thu Jan 25 07:27:29 CET 2018

In e01b8b3e, allow peer_devices without bitmap.
However, should exclude stacked resource in this
case to avoid call trace caused by no bitmap,
bitmap->bitmap_index = -1.

Call Trace when init syncing to the stacked resource:
    drbd_bmio_set_n_write+0x39/0x70 [drbd]
    drbd_bitmap_io+0x8e/0xe0 [drbd]
    bitmap_mod_after_handshake+0xcb/0x1f0 [drbd]
    receive_state+0xada/0x16c0 [drbd]
    drbd_receiver+0x3b1/0x660 [drbd]

Signed-off-by: Nick Wang <nwang at suse.com>
CC: Lars Ellenberg <lars.ellenberg at linbit.com>
CC: Roland Kammerer <roland.kammerer at linbit.com>
CC: drbd-dev at lists.linbit.com
 user/v9/drbdadm_postparse.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/user/v9/drbdadm_postparse.c b/user/v9/drbdadm_postparse.c
index 1cefd5c2..2dabba66 100644
--- a/user/v9/drbdadm_postparse.c
+++ b/user/v9/drbdadm_postparse.c
@@ -465,7 +465,8 @@ static void add_no_bitmap_opt(struct d_resource *res)
 		STAILQ_FOREACH(peer_device, &conn->peer_devices, connection_link) {
-			if (peer_device->connection->peer && peer_diskless(peer_device))
+			if (peer_device->connection->peer && !peer_device->connection->peer->lower &&
+				peer_diskless(peer_device))
 				insert_tail(&peer_device->pd_options, new_opt("bitmap", "no"));

More information about the drbd-dev mailing list