Uploaded image for project: 'Lustre'
  1. Lustre
  2. LU-8193

request mbits isn't set properly for EINPROGRESS resend

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Major
    • Lustre 2.9.0
    • None
    • None
    • 3
    • 9223372036854775807

    Description

      in ptl_send_rpc():

              /* If it's the first time to resend the request for EINPROGRESS,
               * we need to allocate a new XID (see after_reply()), it's different
               * from the resend for reply timeout. */
              if (request->rq_nr_resend != 0 &&
                  list_empty(&request->rq_unreplied_list)) {
                      __u64 min_xid = 0;
                      /* resend for EINPROGRESS, allocate new xid to avoid reply
                       * reconstruction */
                      spin_lock(&imp->imp_lock);
                      ptlrpc_assign_next_xid_nolock(request);
                      request->rq_mbits = request->rq_xid;
                      min_xid = ptlrpc_known_replied_xid(imp);
                      spin_unlock(&imp->imp_lock);
      
                      lustre_msg_set_last_xid(request->rq_reqmsg, min_xid);
                      DEBUG_REQ(D_RPCTRACE, request, "Allocating new xid for "
                                "resend on EINPROGRESS");
              } else if (request->rq_bulk != NULL) {
                      ptlrpc_set_bulk_mbits(request);
                      lustre_msg_set_mbits(request->rq_reqmsg, request->rq_mbits);
              }
      

      lustre_msg_set_mbits() isn't called for first time EINPROGRESS resend, so the mbits won't be set properly in ptlrpc_body. This part of code needs be revised a bit.

      Attachments

        Issue Links

          Activity

            People

              niu Niu Yawei (Inactive)
              niu Niu Yawei (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: