From: jacob Date: Wed, 25 May 2005 15:57:45 +0000 (+0000) Subject: b=6371 X-Git-Tag: v1_7_100~1^25~8^2~96 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=b1df71be64a58f9bdf8a43d082308a369dba7a13;p=fs%2Flustre-release.git b=6371 r=adilger, r=phil Severity : major Frequency : rare Bugzilla : 6371 Description: After recovery, certain operations trigger a failed assertion on a client. Details : Failing over an mds, using lconf -d --failover, while a client was doing a readdir() call would cause the client to LBUG after recovery completed and the readdir() was resent. --- diff --git a/lustre/ChangeLog b/lustre/ChangeLog index 1ec8321..af7bb94 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -60,6 +60,15 @@ Details : This builds on the enhanced upcall-less recovery that was added now try each server in the failover group every 10 seconds. By default, clients would previously try one server every 25 seconds. +Severity : major +Frequency : rare +Bugzilla : 6371 +Description: After recovery, certain operations trigger a failed + assertion on a client. +Details : Failing over an mds, using lconf -d --failover, while a + client was doing a readdir() call would cause the client to + LBUG after recovery completed and the readdir() was resent. + ------------------------------------------------------------------------------ 2005-05-05 Cluster File Systems, Inc. diff --git a/lustre/ptlrpc/client.c b/lustre/ptlrpc/client.c index a2deced..3e13378 100644 --- a/lustre/ptlrpc/client.c +++ b/lustre/ptlrpc/client.c @@ -1396,9 +1396,19 @@ restart: if (req->rq_resend) { lustre_msg_add_flags(req->rq_reqmsg, MSG_RESENT); - if (req->rq_bulk != NULL) + if (req->rq_bulk != NULL) { ptlrpc_unregister_bulk (req); + /* bulk requests are supposed to be + * idempotent, so we are free to bump the xid + * here, which we need to do before + * registering the bulk again (bug 6371). + * print the old xid first for sanity. + */ + DEBUG_REQ(D_HA, req, "bumping xid for bulk: "); + req->rq_xid = ptlrpc_next_xid(); + } + DEBUG_REQ(D_HA, req, "resending: "); }