Whamcloud - gitweb
LU-8497 osp: handle remote -ENOMEM from osp_send_update_req() 54/30354/2
authorJohn L. Hammond <john.hammond@intel.com>
Tue, 14 Nov 2017 18:23:28 +0000 (12:23 -0600)
committerJohn L. Hammond <john.hammond@intel.com>
Wed, 6 Dec 2017 01:25:20 +0000 (01:25 +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().

Lustre-change: https://review.whamcloud.com/30083
Lustre-commit: cef8983c8b5bf51b58df23a779769cc4b8ca8db5

Signed-off-by: John L. Hammond <john.hammond@intel.com>
Change-Id: Ief959b71600157a9c3521775cc06994326e50c51
Reviewed-by: Fan Yong <fan.yong@intel.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Signed-off-by: Minh Diep <minh.diep@intel.com>
Reviewed-on: https://review.whamcloud.com/30354
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
lustre/osp/osp_trans.c

index 5b7f694..4c62057 100644 (file)
@@ -1183,7 +1183,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,