[Drbd-dev] DRBD broken in kernel 6.5 and 6.5.1

Jakub Kicinski kuba at kernel.org
Tue Sep 5 17:23:19 CEST 2023


CC: David

On Sat, 2 Sep 2023 22:31:06 +0200 Serguei Ivantsov wrote:
> Hello,
> 
> After upgrading the kernel to 6.5 the system can't connect to the peer
> (6.4.11) anymore.
> I checked 6.5.1 - same issue.
> All previous kernels including 6.4.14 are working just fine.
> Checking the 6.5 changelog, I found commit
> 9ae440b8fdd6772b6c007fa3d3766530a09c9045 which mentioned some changes to
> DRBD.

I don't see anything obviously wrong here, maybe David has better
ideas. Can you try this?

diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c
index 79ab532aabaf..c607d4304608 100644
--- a/drivers/block/drbd/drbd_main.c
+++ b/drivers/block/drbd/drbd_main.c
@@ -1539,8 +1539,6 @@ static int _drbd_send_page(struct drbd_peer_device *peer_device, struct page *pa
 		    int offset, size_t size, unsigned msg_flags)
 {
 	struct socket *socket = peer_device->connection->data.socket;
-	struct msghdr msg = { .msg_flags = msg_flags, };
-	struct bio_vec bvec;
 	int len = size;
 	int err = -EIO;
 
@@ -1551,10 +1549,13 @@ static int _drbd_send_page(struct drbd_peer_device *peer_device, struct page *pa
 	 * __page_cache_release a page that would actually still be referenced
 	 * by someone, leading to some obscure delayed Oops somewhere else. */
 	if (!drbd_disable_sendpage && sendpage_ok(page))
-		msg.msg_flags |= MSG_NOSIGNAL | MSG_SPLICE_PAGES;
+		msg_flags |= MSG_SPLICE_PAGES;
 
+	msg_flags |= MSG_NOSIGNAL;
 	drbd_update_congested(peer_device->connection);
 	do {
+		struct msghdr msg = { .msg_flags = msg_flags, };
+		struct bio_vec bvec;
 		int sent;
 
 		bvec_set_page(&bvec, page, offset, len);


> On the 6.5.X system I have the following in the kernel log (drbd_send_block()
> failed):
> 
> [    2.473497] drbd: initialized. Version: 8.4.11 (api:1/proto:86-101)
> 
> [    2.475394] drbd: built-in
> 
> [    2.477254] drbd: registered as block device major 147
> 
> [    7.421400] drbd drbd0: Starting worker thread (from drbdsetup-84 [3844])
> 
> [    7.421509] drbd drbd0/0 drbd0: disk( Diskless -> Attaching )
> 
> [    7.421552] drbd drbd0: Method to ensure write ordering: flush
> 
> [    7.421554] drbd drbd0/0 drbd0: max BIO size = 131072
> 
> [    7.421557] drbd drbd0/0 drbd0: drbd_bm_resize called with capacity ==
> 1845173184
> 
> [    7.428017] drbd drbd0/0 drbd0: resync bitmap: bits=230646648
> words=3603854 pages=7039
> 
> [    7.467370] drbd0: detected capacity change from 0 to 1845173184
> 
> [    7.467372] drbd drbd0/0 drbd0: size = 880 GB (922586592 KB)
> 
> [    7.486005] drbd drbd0/0 drbd0: recounting of set bits took additional 0
> jiffies
> 
> [    7.486010] drbd drbd0/0 drbd0: 0 KB (0 bits) marked out-of-sync by on
> disk bit-map.
> 
> [    7.486017] drbd drbd0/0 drbd0: disk( Attaching -> UpToDate )
> 
> [    7.486021] drbd drbd0/0 drbd0: attached to UUIDs
> 32DDB2019708F68A:0000000000000000:7D97648599B446DD:7D96648599B446DD
> 
> [    7.486863] drbd drbd0: conn( StandAlone -> Unconnected )
> 
> [    7.486871] drbd drbd0: Starting receiver thread (from drbd_w_drbd0
> [3847])
> 
> [    7.486918] drbd drbd0: receiver (re)started
> 
> [    7.486929] drbd drbd0: conn( Unconnected -> WFConnection )
> 
> [   12.340212] drbd drbd0: initial packet S crossed
> 
> [   22.310856] drbd drbd0: Handshake successful: Agreed network protocol
> version 101
> 
> [   22.311087] drbd drbd0: Feature flags enabled on protocol level: 0xf
> TRIM THIN_RESYNC WRITE_SAME WRITE_ZEROES.
> 
> [   22.311425] drbd drbd0: conn( WFConnection -> WFReportParams )
> 
> [   22.311621] drbd drbd0: Starting ack_recv thread (from drbd_r_drbd0
> [4071])
> 
> [   22.400702] drbd drbd0/0 drbd0: drbd_sync_handshake:
> 
> [   22.400869] drbd drbd0/0 drbd0: self
> 32DDB2019708F68A:0000000000000000:7D97648599B446DD:7D96648599B446DD bits:0
> flags:0
> 
> [   22.401205] drbd drbd0/0 drbd0: peer
> 32DDB2019708F68A:0000000000000000:7D97648599B446DC:7D96648599B446DD bits:0
> flags:0
> 
> [   22.401538] drbd drbd0/0 drbd0: uuid_compare()=0 by rule 40
> 
> [   22.401709] drbd drbd0/0 drbd0: peer( Unknown -> Secondary ) conn(
> WFReportParams -> Connected ) pdsk( DUnknown -> UpToDate )
> 
> [   22.415394] drbd drbd0/0 drbd0: role( Secondary -> Primary )
> 
> [   22.506540] drbd drbd0/0 drbd0: _drbd_send_page: size=4096 len=4096
> sent=-5
> 
> [   22.506773] drbd drbd0: peer( Secondary -> Unknown ) conn( Connected ->
> NetworkFailure ) pdsk( UpToDate -> DUnknown )
> 
> [   22.507109] drbd drbd0/0 drbd0: new current UUID
> 7F8B15C04AF49C4D:32DDB2019708F68B:7D97648599B446DD:7D96648599B446DD
> 
> [   22.507451] drbd drbd0: ack_receiver terminated
> 
> [   22.507588] drbd drbd0: Terminating drbd_a_drbd0
> 
> [   22.600693] drbd drbd0: Connection closed
> 
> [   22.600937] drbd drbd0: conn( NetworkFailure -> Unconnected )
> 
> [   22.601115] drbd drbd0: receiver terminated
> 
> [   22.601238] drbd drbd0: Restarting receiver thread
> 
> [   22.601378] drbd drbd0: receiver (re)started
> 
> [   22.601508] drbd drbd0: conn( Unconnected -> WFConnection )
> 
> [   23.260624] drbd drbd0: Handshake successful: Agreed network protocol
> version 101
> 
> [   23.260859] drbd drbd0: Feature flags enabled on protocol level: 0xf
> TRIM THIN_RESYNC WRITE_SAME WRITE_ZEROES.
> 
> [   23.261187] drbd drbd0: conn( WFConnection -> WFReportParams )
> 
> [   23.261367] drbd drbd0: Starting ack_recv thread (from drbd_r_drbd0
> [4071])
> 
> [   23.340593] drbd drbd0/0 drbd0: drbd_sync_handshake:
> 
> [   23.340771] drbd drbd0/0 drbd0: self
> 7F8B15C04AF49C4D:32DDB2019708F68B:7D97648599B446DD:7D96648599B446DD bits:1
> flags:0
> 
> [   23.341192] drbd drbd0/0 drbd0: peer
> 32DDB2019708F68A:0000000000000000:7D97648599B446DC:7D96648599B446DD bits:0
> flags:0
> 
> [   23.341649] drbd drbd0/0 drbd0: uuid_compare()=1 by rule 70
> 
> [   23.341824] drbd drbd0/0 drbd0: peer( Unknown -> Secondary ) conn(
> WFReportParams -> WFBitMapS ) pdsk( DUnknown -> Consistent )
> 
> [   23.344911] drbd drbd0/0 drbd0: send bitmap stats [Bytes(packets)]:
> plain 0(0), RLE 23(1), total 23; compression: 100.0%
> 
> [   23.396792] drbd drbd0/0 drbd0: receive bitmap stats [Bytes(packets)]:
> plain 0(0), RLE 23(1), total 23; compression: 100.0%
> 
> [   23.397210] drbd drbd0/0 drbd0: helper command: /sbin/drbdadm
> before-resync-source minor-0
> 
> [   23.407965] drbd drbd0/0 drbd0: helper command: /sbin/drbdadm
> before-resync-source minor-0 exit code 0 (0x0)
> 
> [   23.417547] drbd drbd0/0 drbd0: conn( WFBitMapS -> SyncSource ) pdsk(
> Consistent -> Inconsistent )
> 
> [   23.426697] drbd drbd0/0 drbd0: Began resync as SyncSource (will sync 4
> KB [1 bits set]).
> 
> [   23.435638] drbd drbd0/0 drbd0: updated sync UUID
> 7F8B15C04AF49C4D:32DEB2019708F68B:32DDB2019708F68B:7D97648599B446DD
> 
> [   23.488608] drbd drbd0/0 drbd0: _drbd_send_page: size=4096 len=4096
> sent=-5
> 
> [   23.498182] drbd drbd0/0 drbd0: drbd_send_block() failed
> 
> [   23.508498] drbd drbd0: peer( Secondary -> Unknown ) conn( SyncSource ->
> NetworkFailure )
> 
> [   23.517597] drbd drbd0: ack_receiver terminated
> 
> [   23.527513] drbd drbd0: Terminating drbd_a_drbd0
> 
> [   23.690598] drbd drbd0: Connection closed
> 
> [   23.701857] drbd drbd0: conn( NetworkFailure -> Unconnected )
> 
> [   23.712017] drbd drbd0: receiver terminated
> 
> [   23.721597] drbd drbd0: Restarting receiver thread
> 
> 
> 
> On the peer:
> 
> 
> [349071.038278] drbd drbd0: conn( Unconnected -> WFConnection )
> 
> [349071.558245] drbd drbd0: Handshake successful: Agreed network protocol
> version 101
> 
> [349071.562105] drbd drbd0: Feature flags enabled on protocol level: 0xf
> TRIM THIN_RESYNC WRITE_SAME WRITE_ZEROES.
> 
> [349071.569889] drbd drbd0: conn( WFConnection -> WFReportParams )
> 
> [349071.573802] drbd drbd0: Starting ack_recv thread (from drbd_r_drbd0
> [2660])
> 
> [349071.688547] drbd drbd0/0 drbd0: drbd_sync_handshake:
> 
> [349071.692323] drbd drbd0/0 drbd0: self
> 3375B2019708F68A:0000000000000000:7D97648599B446DC:7D96648599B446DD bits:1
> flags:0
> 
> [349071.699871] drbd drbd0/0 drbd0: peer
> 7F8B15C04AF49C4D:3375B2019708F68B:3374B2019708F68B:3373B2019708F68B bits:1
> flags:0
> 
> [349071.707687] drbd drbd0/0 drbd0: uuid_compare()=-1 by rule 50
> 
> [349071.711563] drbd drbd0/0 drbd0: Becoming sync target due to disk states.
> 
> [349071.715381] drbd drbd0/0 drbd0: peer( Unknown -> Primary ) conn(
> WFReportParams -> WFBitMapT ) pdsk( DUnknown -> UpToDate )
> 
> [349071.723039] drbd drbd0/0 drbd0: receive bitmap stats [Bytes(packets)]:
> plain 0(0), RLE 23(1), total 23; compression: 100.0%
> 
> [349071.732489] drbd drbd0/0 drbd0: send bitmap stats [Bytes(packets)]:
> plain 0(0), RLE 23(1), total 23; compression: 100.0%
> 
> [349071.740178] drbd drbd0/0 drbd0: conn( WFBitMapT -> WFSyncUUID )
> 
> [349071.787113] drbd drbd0/0 drbd0: updated sync uuid
> 3376B2019708F68A:0000000000000000:7D97648599B446DC:7D96648599B446DD
> 
> [349071.794907] drbd drbd0/0 drbd0: helper command: /sbin/drbdadm
> before-resync-target minor-0
> 
> [349071.800006] drbd drbd0/0 drbd0: helper command: /sbin/drbdadm
> before-resync-target minor-0 exit code 0 (0x0)
> 
> [349071.807737] drbd drbd0/0 drbd0: conn( WFSyncUUID -> SyncTarget )
> 
> [349071.811639] drbd drbd0/0 drbd0: Began resync as SyncTarget (will sync 4
> KB [1 bits set]).
> 
> [349071.916117] drbd drbd0: sock was shut down by peer
> 
> [349071.919955] drbd drbd0: peer( Primary -> Unknown ) conn( SyncTarget ->
> BrokenPipe ) pdsk( UpToDate -> DUnknown )
> 
> [349071.927796] drbd drbd0: short read (expected size 4096)
> 
> [349071.931812] drbd drbd0: error receiving RSDataReply, e: -5 l: 4096!
> 
> [349071.935864] drbd drbd0: ack_receiver terminated
> 
> [349071.939906] drbd drbd0: Terminating drbd_a_drbd0
> 
> [349072.088385] drbd drbd0: Connection closed
> 
> [349072.092398] drbd drbd0: conn( BrokenPipe -> Unconnected )
> 
> [349072.096436] drbd drbd0: receiver terminated
> 
> [349072.100469] drbd drbd0: Restarting receiver thread
> 
> [349072.104454] drbd drbd0: receiver (re)started
> 
> [349072.108373] drbd drbd0: conn( Unconnected -> WFConnection )
> 
> 
> --
> 
>  Best Regards,
> 
>  Serguei



More information about the drbd-dev mailing list