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

hit LASSERT(!cfs_list_empty(&req->rq_timed_list)) in ptlrpc_server_drop_request

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Blocker
    • Lustre 2.3.0, Lustre 2.4.0
    • Lustre 2.3.0
    • None
    • 3
    • 4482

    Description

      This bug is introduced in by commit 07b8db220e48782369f48d86213c5d404a628ded , which make ptlrpc_server_drop_request() not to hold at_lock for checking req::rq_at_linked. This change might race with ptlrpc_at_check_timed() if:

      1. thread-1: call ptlrpc_at_check_timed() and remove the request from paa_reqs_array, before it set req::rq_at_linked to zero...
      2. thread-2: call ptlrpc_server_drop_request() to release the last refcount, and it found req::rq_at_linked is non-zero, so it entered the condition "if (req->rq_at_linked) {...}

        "

      3. thread-1: set req::rq_at_linked to zero
      4. thread-2: take at_lock, and hit LASSERT(!cfs_list_empty(&req->rq_timed_list)) because thread-1 has already removed req::rq_at_linked from paa_reqs_array in step-1

      Attachments

        Activity

          People

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

            Dates

              Created:
              Updated:
              Resolved: