From: Brian Foster <bfoster@redhat.com>
To: Greg KH <greg@kroah.com>
Cc: stable@vger.kernel.org, david@fromorbit.com, hch@lst.de
Subject: Re: [PATCH] xfs: prevent dropping ioend completions during buftarg wait
Date: Tue, 27 Sep 2016 10:22:53 -0400 [thread overview]
Message-ID: <20160927142253.GB38187@bfoster.bfoster> (raw)
In-Reply-To: <20160927141740.GA22526@kroah.com>
On Tue, Sep 27, 2016 at 04:17:40PM +0200, Greg KH wrote:
> On Tue, Sep 27, 2016 at 10:03:57AM -0400, Brian Foster wrote:
> > commit 800b2694f890cc35a1bda63501fc71c94389d517 upstream.
> >
> > xfs_wait_buftarg() waits for all pending I/O, drains the ioend
> > completion workqueue and walks the LRU until all buffers in the cache
> > have been released. This is traditionally an unmount operation` but the
> > mechanism is also reused during filesystem freeze.
> >
> > xfs_wait_buftarg() invokes drain_workqueue() as part of the quiesce,
> > which is intended more for a shutdown sequence in that it indicates to
> > the queue that new operations are not expected once the drain has begun.
> > New work jobs after this point result in a WARN_ON_ONCE() and are
> > otherwise dropped.
> >
> > With filesystem freeze, however, read operations are allowed and can
> > proceed during or after the workqueue drain. If such a read occurs
> > during the drain sequence, the workqueue infrastructure complains about
> > the queued ioend completion work item and drops it on the floor. As a
> > result, the buffer remains on the LRU and the freeze never completes.
> >
> > Despite the fact that the overall buffer cache cleanup is not necessary
> > during freeze, fix up this operation such that it is safe to invoke
> > during non-unmount quiesce operations. Replace the drain_workqueue()
> > call with flush_workqueue(), which runs a similar serialization on
> > pending workqueue jobs without causing new jobs to be dropped. This is
> > safe for unmount as unmount independently locks out new operations by
> > the time xfs_wait_buftarg() is invoked.
> >
> > cc: <stable@vger.kernel.org>
> > Signed-off-by: Brian Foster <bfoster@redhat.com>
> > Reviewed-by: Christoph Hellwig <hch@lst.de>
> > Signed-off-by: Dave Chinner <david@fromorbit.com>
> > ---
> >
> > Note that this applies to linux-4.7.y.
>
> It also applied to 4.4-stable, should I put it there as well?
>
Yeah, it looks like we included "xfs: log mount failures don't wait for
buffers to be released" there so that probably makes sense. Thanks!
Brian
> thanks,
>
> greg k-h
prev parent reply other threads:[~2016-09-27 14:22 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-09 16:04 FAILED: patch "[PATCH] xfs: prevent dropping ioend completions during buftarg wait" failed to apply to 4.7-stable tree gregkh
2016-09-27 14:03 ` [PATCH] xfs: prevent dropping ioend completions during buftarg wait Brian Foster
2016-09-27 14:17 ` Greg KH
2016-09-27 14:22 ` Brian Foster [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160927142253.GB38187@bfoster.bfoster \
--to=bfoster@redhat.com \
--cc=david@fromorbit.com \
--cc=greg@kroah.com \
--cc=hch@lst.de \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox