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.