Details

    • Bug
    • Resolution: Fixed
    • Blocker
    • Lustre 2.7.0
    • None
    • None
    • 3
    • 15943

    Description

      Although very liketly, but there is no guarantee that request_out_callback will happen before reply_in_callback, if a request got reply before got request_out_callback(), then ptlrpc_unregister_reply() will return false because request has not been unlinked and req:;rq_req_unlink is not set to false.

      static inline int                       
      ptlrpc_client_recv_or_unlink(struct ptlrpc_request *req)
      {               
              int rc;
                      
              spin_lock(&req->rq_lock);          
              ......
              rc = req->rq_receiving_reply ;
              rc = rc || req->rq_req_unlink || req->rq_reply_unlink;
              spin_unlock(&req->rq_lock);
              return rc;
      }         
      

      After this, even request_in_callback() happened, there is no wakeup for this request, ptlrpcd or app thread will keep waiting.

      Attachments

        Activity

          People

            liang Liang Zhen (Inactive)
            liang Liang Zhen (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            8 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: