aboutsummaryrefslogtreecommitdiff
path: root/drivers/block/drbd/drbd_receiver.c
diff options
context:
space:
mode:
authorJens Axboe <jaxboe@fusionio.com>2011-06-30 10:10:50 +0200
committerJens Axboe <jaxboe@fusionio.com>2011-06-30 10:10:50 +0200
commit7b28afe01ab6ffb5f152f47831b44933facd2328 (patch)
treea537d78f49fa1b959c9a453f459c1acd767a939f /drivers/block/drbd/drbd_receiver.c
parent726e99ab88db059fe1422e15376ae404f8c66eb4 (diff)
parent86e1e98e5c6b4edab97e2b058466ef553cfd878e (diff)
Merge branch 'for-3.0-important' of git://git.drbd.org/linux-2.6-drbd into for-linus
Diffstat (limited to 'drivers/block/drbd/drbd_receiver.c')
-rw-r--r--drivers/block/drbd/drbd_receiver.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c
index 25d32c5aa50..43beaca5317 100644
--- a/drivers/block/drbd/drbd_receiver.c
+++ b/drivers/block/drbd/drbd_receiver.c
@@ -4602,6 +4602,11 @@ int drbd_asender(struct drbd_thread *thi)
dev_err(DEV, "meta connection shut down by peer.\n");
goto reconnect;
} else if (rv == -EAGAIN) {
+ /* If the data socket received something meanwhile,
+ * that is good enough: peer is still alive. */
+ if (time_after(mdev->last_received,
+ jiffies - mdev->meta.socket->sk->sk_rcvtimeo))
+ continue;
if (ping_timeout_active) {
dev_err(DEV, "PingAck did not arrive in time.\n");
goto reconnect;
@@ -4637,6 +4642,7 @@ int drbd_asender(struct drbd_thread *thi)
goto reconnect;
}
if (received == expect) {
+ mdev->last_received = jiffies;
D_ASSERT(cmd != NULL);
if (!cmd->process(mdev, h))
goto reconnect;