Fix up the spinlock situation around rq->rq_list and the lists it lives on.
We avoid a deadlock in ptlrpc_free_committed() when it calls ptlrpc_free_req(). Likewise when ptlrpc_cleanup_client() calls ptlrpc_free_req(). A note for Mike in ll_recover() for when it is re-enabled: We should not hold a spinlock over such a lengthy operation. If necessary, drop spinlock, do operation, re-get spinlock, restart loop. If we need to avoid re-processing items, then delete them from the list as they are replayed and re-add at the tail of this list, so the next item to process will always be at the head of the list.
Loading
Please register or sign in to comment