On Wed, Jul 06 2016 at 9:53am -0400, Mikulas Patocka <mpatocka@xxxxxxxxxx> wrote: > > > On Wed, 6 Jul 2016, Mike Snitzer wrote: > > > On Mon, Jul 04 2016 at 6:53pm -0400, > > Mikulas Patocka <mpatocka@xxxxxxxxxx> wrote: > > > > > Hi > > > > > > This is the second version of patches that fix deadlocks by redirecting > > > bios from current->bio_list to rescuer workqueues. > > > > > > I found out that the original patches caused deadlock with the loopback > > > device. When the loopback device is used, both lower and upper filesystems > > > use the same bio set - fs_bio_set. Consequently, bios submitted by both of > > > them end up on the same rescuer workqueue. There is a deadlock possibility > > > - if generic_make_request for the upper filesystem's bio blocks (because > > > there are too many requests in flight on the loop device), it may stall > > > processing some bios for the lower filesystem. > > > > > > Ideadlly, each filesystem should have its own bio set. But it doesn't. So > > > I fix this problem by not offloading bios allocated from fs_bio_set. > > > > I'd much preferred you just send an incremental fix that built on the > > tree you know I started, here: > > http://git.kernel.org/cgit/linux/kernel/git/snitzer/linux.git/log/?h=wip > > You need to change three patches in your git: > * block: flush queued bios when process blocks to avoid deadlock > * block: prepare for timed offload of queued bios to workqueue > * block: use timed offload of queued bios to a workqueue > because this bug is present in all of them. > > When these patches are sent to Linus, the bug should not be present in any > of them. Yes, I'm aware. Please review: http://git.kernel.org/cgit/linux/kernel/git/snitzer/linux.git/log/?h=wip -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel