From: John L. Hammond Date: Tue, 14 Nov 2017 18:23:28 +0000 (-0600) Subject: LU-8497 osp: handle remote -ENOMEM from osp_send_update_req() X-Git-Tag: 2.10.56~12 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=cef8983c8b5bf51b58df23a779769cc4b8ca8db5;p=fs%2Flustre-release.git 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 --- 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,