[dm-devel] [PATCH 0/3] offload bios to a thread
Mike Snitzer
snitzer at redhat.com
Wed Jul 6 13:55:13 UTC 2016
On Wed, Jul 06 2016 at 9:53am -0400,
Mikulas Patocka <mpatocka at redhat.com> wrote:
>
>
> On Wed, 6 Jul 2016, Mike Snitzer wrote:
>
> > On Mon, Jul 04 2016 at 6:53pm -0400,
> > Mikulas Patocka <mpatocka at redhat.com> 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
More information about the dm-devel
mailing list