From cef8983c8b5bf51b58df23a779769cc4b8ca8db5 Mon Sep 17 00:00:00 2001 From: "John L. Hammond" Date: Tue, 14 Nov 2017 12:23:28 -0600 Subject: [PATCH] LU-8497 osp: handle remote -ENOMEM from osp_send_update_req() In osp_send_update_req() detect an unsent request by checking rq_queued_time == 0 rather than rq_set == NULL, which is always true after returning from ptlrpc_queue_wait(). Signed-off-by: John L. Hammond Change-Id: Ief959b71600157a9c3521775cc06994326e50c51 Reviewed-on: https://review.whamcloud.com/30083 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Fan Yong Reviewed-by: Andreas Dilger Reviewed-by: Oleg Drokin --- lustre/osp/osp_trans.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lustre/osp/osp_trans.c b/lustre/osp/osp_trans.c index c28d13b..b47376b 100644 --- a/lustre/osp/osp_trans.c +++ b/lustre/osp/osp_trans.c @@ -1180,7 +1180,10 @@ static int osp_send_update_req(const struct lu_env *env, rc = ptlrpc_queue_wait(req); if (osp->opd_connect_mdt) osp_put_rpc_lock(osp); - if ((rc == -ENOMEM && req->rq_set == NULL) || + + /* We use rq_queued_time to distinguish between local + * and remote -ENOMEM. */ + if ((rc == -ENOMEM && req->rq_queued_time == 0) || (req->rq_transno == 0 && !req->rq_committed)) { if (args->oaua_update != NULL) { /* If osp_update_interpret is not being called, -- 1.8.3.1