[DRBD-user] Error using SDP in DRBD8.4

Lars Ellenberg lars.ellenberg at linbit.com
Wed Oct 28 09:37:47 CET 2015

Note: "permalinks" may not be as permanent as we would like,
direct links of old sources may well be a few messages off.


On Fri, Oct 23, 2015 at 09:49:37AM +0100, Nuno Fernandes wrote:
> A Quinta, 22 de Outubro de 2015 16:47:53 Lars Ellenberg escreveu:
> > On Wed, Oct 21, 2015 at 05:00:56PM +0100, Nuno Fernandes wrote:

kernel: drbd infiniband: conn( Unconnected -> WFConnection )
kernel: drbd infiniband: sock_recvmsg returned -11
kernel: drbd infiniband: conn( WFConnection -> BrokenPipe )
kernel: drbd infiniband: short read (expected size 8)

> > > > > I'm using latest centos 6 with 2.6.32-573.7.1.el6.x86_64 kernel and
> > > > > drbd84 from elrepo.
> > > > 
> > > > Last time I checked, it "worked for me".
> > > 
> > > It works with drbd 8.3. How can i continue in the debug process? Is there
> > > any loglevel i can increase in drbd kernel module?
> > 
> > So, it *still* works with drbd 8.3 on the upgraded kernel,
> > and the only variable is the DRBD version?
> 
> That is correct. We didn't upgrade the kernel. Only drbd.
> 
> > Or it *used* to work with old drbd on old kernel on old OS,
> > basically on a completely different system?
> 
> If uninstall drbd 8.4 and install 8.3 it works fine using SDP.

Hm.
See if this improvesbehaviour for you.

diff --git a/drbd/drbd_receiver.c b/drbd/drbd_receiver.c
index d82176f..6213ab7 100644
--- a/drbd/drbd_receiver.c
+++ b/drbd/drbd_receiver.c
@@ -886,11 +886,13 @@ static struct socket *drbd_wait_for_connect(struct drbd_connection *connection,
 	timeo = connect_int * HZ;
 	timeo += (prandom_u32() & 1) ? timeo / 7 : -timeo / 7; /* 28.5% random jitter */
 
-	err = wait_for_completion_interruptible_timeout(&ad->door_bell, timeo);
-	if (err <= 0)
-		return NULL;
-
 	err = kernel_accept(ad->s_listen, &s_estab, O_NONBLOCK);
+	if (err) {
+		err = wait_for_completion_interruptible_timeout(&ad->door_bell, timeo);
+		if (err <= 0)
+			return NULL;
+		err = kernel_accept(ad->s_listen, &s_estab, O_NONBLOCK);
+	}
 	if (err < 0 && err != -EAGAIN && err != -EINTR && err != -ERESTARTSYS) {
 		drbd_err(connection, "accept failed, err = %d\n", err);
 		conn_request_state(connection, NS(conn, C_DISCONNECTING), CS_HARD);


-- 
: Lars Ellenberg
: http://www.LINBIT.com | Your Way to High Availability
: DRBD, Linux-HA  and  Pacemaker support and consulting

DRBD® and LINBIT® are registered trademarks of LINBIT, Austria.
__
please don't Cc me, but send to list   --   I'm subscribed



More information about the drbd-user mailing list