Whamcloud - gitweb
LU-8497 osp: handle remote -ENOMEM from osp_send_update_req() 83/30083/2
authorJohn L. Hammond <john.hammond@intel.com>
Tue, 14 Nov 2017 18:23:28 +0000 (12:23 -0600)
committerOleg Drokin <oleg.drokin@intel.com>
Fri, 1 Dec 2017 05:16:40 +0000 (05:16 +0000)
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 <john.hammond@intel.com>
Change-Id: Ief959b71600157a9c3521775cc06994326e50c51
Reviewed-on: https://review.whamcloud.com/30083
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Fan Yong <fan.yong@intel.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/osp/osp_trans.c

index c28d13b..b47376b 100644 (file)
@@ -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);
                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,
                    (req->rq_transno == 0 && !req->rq_committed)) {
                        if (args->oaua_update != NULL) {
                                /* If osp_update_interpret is not being called,