linux-xfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Brian Foster <bfoster@redhat.com>
To: Christoph Hellwig <hch@infradead.org>
Cc: "Darrick J. Wong" <darrick.wong@oracle.com>, linux-xfs@vger.kernel.org
Subject: Re: [PATCH v3 03/17] xfs: simplify inode flush error handling
Date: Fri, 1 May 2020 07:22:54 -0400	[thread overview]
Message-ID: <20200501112254.GA40250@bfoster> (raw)
In-Reply-To: <20200501091730.GA20187@infradead.org>

On Fri, May 01, 2020 at 02:17:30AM -0700, Christoph Hellwig wrote:
> On Thu, Apr 30, 2020 at 11:37:03AM -0700, Darrick J. Wong wrote:
> > TBH I've long wondered why we flush one inode and only then check that
> > the icluster buffer is pinned and if so force the log?  Did we do that
> > for some sort of forward progress guarantee?
> > 
> > I looked at a3f74ffb6d144 (aka when the log force moved here from after
> > the iflush_cluster call) but that didn't help me figure out if there's
> > some subtlety here I'm missing, or if the ordering here was weird but
> > the weirdness didn't matter?
> > 
> > TLDR: I can't tell why it's ok to move the xfs_iflush_int call down past
> > the log force. :/
> 
> As far as I can tell the log force is to avoid waiting for the buffer
> to be unpinned.  This is mostly bad when using xfs_bwrite, which we
> still do for the xfs_reclaim_inode case, given that xfs_inode_item_push
> alredy checks for the pinned inode earlier, and lets the xfsaild handle
> the log pushing.
> 

Right, that was my impression of the force as well. Note that it's async
and we already own the buffer lock at this point, so I don't see why
ordering would matter that much functionally. My impression of the
earlier patch is this landed before the cluster flush because that's
heavier weight and simply provides the bulk of the optimization.

> Which means doing the log_force earlier is actually a (practially not
> relevant) micro-optimization as it gives the log code a few more
> instructions worth of time to push out and complete the log buffer.
> 
> Maybe this wants to be split out into a prep patch to better document
> the change.
> 
> 

The intent was more just to clean up the function than to provide any
sort of additional optimization. It seems cleaner to check pinned status
as soon as we grab the buffer vs. somewhere between inode flushes. I
don't think this warrants a separate patch unless we took it further to
somehow avoid the log force in the non-reclaim case. My understanding is
that Dave's upcoming work would eliminate the need for this force in the
reclaim case, so I'm not sure there's value in swizzling it around in
the meantime.

Brian


  parent reply	other threads:[~2020-05-01 11:23 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-29 17:21 [PATCH v3 00/17] xfs: flush related error handling cleanups Brian Foster
2020-04-29 17:21 ` [PATCH v3 01/17] xfs: refactor failed buffer resubmission into xfsaild Brian Foster
2020-04-30 17:26   ` Darrick J. Wong
2020-04-29 17:21 ` [PATCH v3 02/17] xfs: factor out buffer I/O failure code Brian Foster
2020-04-30 18:16   ` Darrick J. Wong
2020-05-01  7:43   ` Christoph Hellwig
2020-04-29 17:21 ` [PATCH v3 03/17] xfs: simplify inode flush error handling Brian Foster
2020-04-30 18:37   ` Darrick J. Wong
2020-05-01  9:17     ` Christoph Hellwig
2020-05-01 10:17       ` Christoph Hellwig
2020-05-01 17:43         ` Darrick J. Wong
2020-05-01 17:50           ` Christoph Hellwig
2020-05-01 11:22       ` Brian Foster [this message]
2020-04-29 17:21 ` [PATCH v3 04/17] xfs: remove unnecessary shutdown check from xfs_iflush() Brian Foster
2020-04-30 18:37   ` Darrick J. Wong
2020-04-29 17:21 ` [PATCH v3 05/17] xfs: reset buffer write failure state on successful completion Brian Foster
2020-04-30 18:41   ` Darrick J. Wong
2020-05-01  7:44   ` Christoph Hellwig
2020-04-29 17:21 ` [PATCH v3 06/17] xfs: refactor ratelimited buffer error messages into helper Brian Foster
2020-04-30 18:42   ` Darrick J. Wong
2020-05-01  7:44   ` Christoph Hellwig
2020-04-29 17:21 ` [PATCH v3 07/17] xfs: ratelimit unmount time per-buffer I/O error alert Brian Foster
2020-04-30 18:43   ` Darrick J. Wong
2020-04-30 22:07   ` Dave Chinner
2020-05-01 11:24     ` Brian Foster
2020-05-01  7:48   ` Christoph Hellwig
2020-04-29 17:21 ` [PATCH v3 08/17] xfs: fix duplicate verification from xfs_qm_dqflush() Brian Foster
2020-04-30 18:45   ` Darrick J. Wong
2020-05-01 11:24     ` Brian Foster
2020-04-29 17:21 ` [PATCH v3 09/17] xfs: abort consistently on dquot flush failure Brian Foster
2020-04-30 18:46   ` Darrick J. Wong
2020-04-29 17:21 ` [PATCH v3 10/17] xfs: acquire ->ail_lock from xfs_trans_ail_delete() Brian Foster
2020-04-30 18:52   ` Darrick J. Wong
2020-05-01 11:25     ` Brian Foster
2020-05-01  7:50   ` Christoph Hellwig
2020-04-29 17:21 ` [PATCH v3 11/17] xfs: use delete helper for items expected to be in AIL Brian Foster
2020-04-30 18:54   ` Darrick J. Wong
2020-05-01  7:56   ` Christoph Hellwig
2020-04-29 17:21 ` [PATCH v3 12/17] xfs: drop unused shutdown parameter from xfs_trans_ail_remove() Brian Foster
2020-04-30 18:56   ` Darrick J. Wong
2020-05-01  7:57   ` Christoph Hellwig
2020-04-29 17:21 ` [PATCH v3 13/17] xfs: combine xfs_trans_ail_[remove|delete]() Brian Foster
2020-04-30 18:58   ` Darrick J. Wong
2020-05-01  8:01     ` Christoph Hellwig
2020-05-01  8:00   ` Christoph Hellwig
2020-05-01 11:25     ` Brian Foster
2020-04-29 17:21 ` [PATCH v3 14/17] xfs: remove unused iflush stale parameter Brian Foster
2020-04-30 18:58   ` Darrick J. Wong
2020-04-29 17:21 ` [PATCH v3 15/17] xfs: random buffer write failure errortag Brian Foster
2020-04-30 18:59   ` Darrick J. Wong
2020-05-01  8:02   ` Christoph Hellwig
2020-04-29 17:21 ` [PATCH v3 16/17] xfs: remove unused shutdown types Brian Foster
2020-04-30 18:59   ` Darrick J. Wong
2020-04-29 17:21 ` [PATCH v3 17/17] xfs: remove unused iget_flags param from xfs_imap_to_bp() Brian Foster
2020-04-30 19:00   ` Darrick J. Wong
2020-05-01  8:03     ` Christoph Hellwig
2020-05-01 11:25     ` Brian Foster

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=20200501112254.GA40250@bfoster \
    --to=bfoster@redhat.com \
    --cc=darrick.wong@oracle.com \
    --cc=hch@infradead.org \
    --cc=linux-xfs@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;
as well as URLs for NNTP newsgroup(s).