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

Inconsistent CLIO lock state maybe cause cl_lock cannot be cached

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Blocker
    • Lustre 2.2.0, Lustre 2.3.0
    • Lustre 2.2.0
    • None
    • 2
    • 3
    • 4689

    Description

      According to current CLIO lock state machine rules, the last "unuse()" maybe changes the cl_lock state to CLS_CACHED or CLS_NEW, and only the CLS_HELD cl_lock can be changed to CLS_CACHED.

      On the other hand, with AGL introduced, the AGL RPC sponsor maybe exits the cl_lock processing without "wait()" called before corresponding OSC lock "upcall()", then it is the last "unuse()" duty to update the cl_lock state according to the low layer osc_lock state. To make the cl_lock interface clean, "wait()" should be called when the last "unuse()" called. Currently, it is done in "lov_lock_unuse()" against toplock. But OSC lock "upcall()" is against sublock. So the sublock state maybe un-updated, and inconsistent with low layer osc_lock state, then when the last "unuse()", its state cannot be changed to CLS_CACHED as expectation.

      Attachments

        Issue Links

          Activity

            People

              yong.fan nasf (Inactive)
              yong.fan nasf (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: