Am Montag, den 04.03.2013, 08:45 -0800 schrieb Paul Taysom: > Changed the dm-verity prefetching to use a worker thread to avoid > a deadlock in dm-bufio. Do you know of any bug reports about this? Searching for »dm-verity dead lock« I found [1], which seems to be the issue, right? If yes, please reference it. > If generic_make_request is called recursively, it queues the I/O > request on the current->bio_list without making the I/O request > and returns. The routine making the recursive call cannot wait > for the I/O to complete. > > The deadlock occurred when one thread grabbed the bufio_client > mutex and waited for an I/O to complete but the I/O was queued > on another thread’s current->bio_list and it was waiting to get > the mutex held by the first thread. > > The fix allows only one I/O request from dm-verity to dm-bufio > per thread. To do this, the prefetch requests were queued on worker > threads. > > In addition to avoiding the deadlock, this fix made a slight > improvement in performance. > > seconds_kernel_to_login: > with prefetch: 8.43s > without prefetch: 9.2s > worker prefetch: 8.28s > > Signed-off-by: Paul Taysom <taysom@xxxxxxxxxxxx> > --- > drivers/md/dm-verity.c | 29 +++++++++++++++++++++++++++-- > 1 file changed, 27 insertions(+), 2 deletions(-) Acked-by: Paul Menzel <paulepanter@xxxxxxxxxxxxxxxxxxxxx> Thanks, Paul [1] https://code.google.com/p/chromium-os/issues/detail?id=39148
Attachment:
signature.asc
Description: This is a digitally signed message part
-- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel