Details

    • Bug
    • Resolution: Fixed
    • Blocker
    • Lustre 2.8.0
    • None
    • None
    • 3
    • 9223372036854775807

    Description

      In out_handle() we have two GOTO(out_free, err_serious(rc)) that should be GOTO(out_free, rc = err_serious(rc)). If followed these will cause an LBUG since the reply has not been packed yet.

      Attachments

        Issue Links

          Activity

            [LU-7715] out_handle() misuses GOTO()

            Landed for 2.8

            jgmitter Joseph Gmitter (Inactive) added a comment - Landed for 2.8

            Oleg Drokin (oleg.drokin@intel.com) merged in patch http://review.whamcloud.com/18187/
            Subject: LU-7715 out: fix err_serious in out_handle
            Project: fs/lustre-release
            Branch: master
            Current Patch Set:
            Commit: 7ab18ff6ffef4f5267e3893210a5fbc6cb46efb0

            gerrit Gerrit Updater added a comment - Oleg Drokin (oleg.drokin@intel.com) merged in patch http://review.whamcloud.com/18187/ Subject: LU-7715 out: fix err_serious in out_handle Project: fs/lustre-release Branch: master Current Patch Set: Commit: 7ab18ff6ffef4f5267e3893210a5fbc6cb46efb0

            wangdi (di.wang@intel.com) uploaded a new patch: http://review.whamcloud.com/18187
            Subject: LU-7715 out: fix err_serious in out_handle
            Project: fs/lustre-release
            Branch: master
            Current Patch Set: 1
            Commit: 3c11d3024df04989c7499004560a8358cdce1e11

            gerrit Gerrit Updater added a comment - wangdi (di.wang@intel.com) uploaded a new patch: http://review.whamcloud.com/18187 Subject: LU-7715 out: fix err_serious in out_handle Project: fs/lustre-release Branch: master Current Patch Set: 1 Commit: 3c11d3024df04989c7499004560a8358cdce1e11
            di.wang Di Wang added a comment -

            ah, sorry, I missed the comments.

            di.wang Di Wang added a comment - ah, sorry, I missed the comments.
            di.wang Di Wang added a comment -

            do you mean this? So if it return with non-serious error, and did not pack reply, then it will panic.

                           /*
                             * Process request, there can be two types of rc:
                             * 1) errors with msg unpack/pack, other failures outside the
                             * operation itself. This is counted as serious errors;
                             * 2) errors during fs operation, should be placed in rq_status
                             * only
                             */
                            rc = h->th_act(tsi);
                            if (!is_serious(rc) &&
                                !req->rq_no_reply && req->rq_reply_state == NULL) {
                                    DEBUG_REQ(D_ERROR, req, "%s \"handler\" %s did not "
                                              "pack reply and returned 0 error\n",
                                              tgt_name(tsi->tsi_tgt), h->th_name);
                                    LBUG();
                            }
            

            So the patch for LU-7039 turns a few normal error to serious error, though it did not convert all of them. Why this is related with the fix of LU-7039? or I miss sth?

            di.wang Di Wang added a comment - do you mean this? So if it return with non-serious error, and did not pack reply, then it will panic. /* * Process request, there can be two types of rc: * 1) errors with msg unpack/pack, other failures outside the * operation itself. This is counted as serious errors; * 2) errors during fs operation, should be placed in rq_status * only */ rc = h->th_act(tsi); if (!is_serious(rc) && !req->rq_no_reply && req->rq_reply_state == NULL) { DEBUG_REQ(D_ERROR, req, "%s \"handler\" %s did not " "pack reply and returned 0 error\n", tgt_name(tsi->tsi_tgt), h->th_name); LBUG(); } So the patch for LU-7039 turns a few normal error to serious error, though it did not convert all of them. Why this is related with the fix of LU-7039 ? or I miss sth?
            jhammond John Hammond added a comment -

            > I do not think this is related with the landing of LU-7039.

            http://review.whamcloud.com/#/c/16969/34/lustre/target/out_handler.c

            jhammond John Hammond added a comment - > I do not think this is related with the landing of LU-7039 . http://review.whamcloud.com/#/c/16969/34/lustre/target/out_handler.c
            di.wang Di Wang added a comment - - edited

            Hmm, according to the comments in tgt_handle_request0(), all of requests handler should return serious error if the reply is not packed yet. so out_handle() should all return err_serious() before req_capsule_server_pack(). I do not think this is related with the landing of LU-7039.

            di.wang Di Wang added a comment - - edited Hmm, according to the comments in tgt_handle_request0(), all of requests handler should return serious error if the reply is not packed yet. so out_handle() should all return err_serious() before req_capsule_server_pack(). I do not think this is related with the landing of LU-7039 .

            Hi Di,

            Can you have a look to see if this is related to the LU-7039 landing? Discussion at triage today seemed to lead down that path.

            Thanks.
            Joe

            jgmitter Joseph Gmitter (Inactive) added a comment - Hi Di, Can you have a look to see if this is related to the LU-7039 landing? Discussion at triage today seemed to lead down that path. Thanks. Joe

            People

              di.wang Di Wang
              jhammond John Hammond
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: