Commit af38abfc authored by Vitaly Fertman's avatar Vitaly Fertman Committed by Greg Kroah-Hartman

staging/lustre/ptlrpc: Early Reply vs Reply MDunlink

A race between unregister_reply & early reply.
When buffers are busy for the early transfer, they cannon be unlinked
by unregister_reply, so the RPC gets into UNREGISTERING state. The
coming reply_in_callback for the early RPC already has unlinked flag
set due to previous mdunlink attempt, but we handle it properly only
for UNILNK event, whereas this is PUT in this case.
Signed-off-by: default avatarVitaly Fertman <vitaly.fertman@seagate.com>
Seagate-bug-id: MRP-3323
Reviewed-by: default avatarAlexey Leonidovich Lyashkov <alexey.lyashkov@seagate.com>
Reviewed-by: default avatarAndriy Skulysh <andriy.skulysh@seagate.com>
Tested-by: default avatarParinay Vijayprakash Kondekar <parinay.kondekar@seagate.com>
Reviewed-on: http://review.whamcloud.com/18934
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-7434Reviewed-by: default avatarChris Horn <hornc@cray.com>
Reviewed-by: default avatarAndreas Dilger <andreas.dilger@intel.com>
Signed-off-by: default avatarOleg Drokin <green@linuxhacker.ru>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 9faa2ade
...@@ -137,7 +137,8 @@ void reply_in_callback(lnet_event_t *ev) ...@@ -137,7 +137,8 @@ void reply_in_callback(lnet_event_t *ev)
req->rq_early_count++; /* number received, client side */ req->rq_early_count++; /* number received, client side */
if (req->rq_replied) /* already got the real reply */ /* already got the real reply or buffers are already unlinked */
if (req->rq_replied || req->rq_reply_unlinked == 1)
goto out_wake; goto out_wake;
req->rq_early = 1; req->rq_early = 1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment