Whamcloud - gitweb
Fix up the spinlock situation around rq->rq_list and the lists it lives on.
authoradilger <adilger>
Thu, 29 Aug 2002 07:11:32 +0000 (07:11 +0000)
committeradilger <adilger>
Thu, 29 Aug 2002 07:11:32 +0000 (07:11 +0000)
commit0ba38e94c4bf2f4e74bf6a287edf97a2616328ca
treec543f31a2a1030af0a618b679012d7a287b4128b
parent30067c13eb00be7e44b1e2c939455c91da4df19e
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.
lustre/include/linux/lustre_net.h
lustre/llite/recover.c
lustre/ptlrpc/client.c