[PATCH] rbd: don't hold spinlock during messenger flush

2012-04-05 Thread Alex Elder
A recent change made changes to the rbd_client_list be protected by a spinlock. Unfortunately in rbd_put_client(), the lock is taken before possibly dropping the last reference to an rbd_client, and on the last reference that eventually calls flush_workqueue() which can sleep. The problem was

Re: [PATCH] rbd: don't hold spinlock during messenger flush

2012-04-05 Thread Sage Weil
On Thu, 5 Apr 2012, Alex Elder wrote: A recent change made changes to the rbd_client_list be protected by a spinlock. Unfortunately in rbd_put_client(), the lock is taken before possibly dropping the last reference to an rbd_client, and on the last reference that eventually calls