On Wed, 12 Aug 2015, NeilBrown wrote: > On Tue, 11 Aug 2015 05:14:33 -0400 (EDT) Mikulas Patocka > <mpatocka@xxxxxxxxxx> wrote: > > > Hi > > > > On Mon, 10 Aug 2015, NeilBrown wrote: > > > > > > > > Hi Mikulas, > > > I have a customer hitting the deadlock you described over a year ago > > > in: > > > > > > Subject: [PATCH] block: flush queued bios when the process > > > blocks > > > > Ask block layer maintainers to accept that patch. > > Unfortunately I don't really like the patch ... or the bioset rescue > workqueues that it is based on. Sorry. > > So I might keep looking for a more localised approach.... The problem here is that other dm targets may deadlock in a similar way too - for example, dm-thin could deadlock on pmd->pool_lock. The cause of the bug is bio queuing on current->bio_list. There is an assumption that if a dm target submits a bio to a lower-level target, the bio finishes in finite time. Queuing on current->bio_list breaks the assumption, bios can be held indefinitelly on current->bio_list. The patch that flushes current->bio_list is the correct way to fix it - it makes sure that a bio can't be held indefinitely. Another way to fix it would be to abandon current->bio_list --- but then, there would be problem with stack overflow on deeply nested targets. Mikulas -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel