From: Christoph Hellwig <hch@infradead.org>
To: Dave Chinner <david@fromorbit.com>
Cc: xfs@oss.sgi.com
Subject: Re: [PATCH 1/3] xfs: Use delayed write for inodes rather than async
Date: Fri, 8 Jan 2010 05:36:21 -0500 [thread overview]
Message-ID: <20100108103620.GA11769@infradead.org> (raw)
In-Reply-To: <1262649861-28530-2-git-send-email-david@fromorbit.com>
> +++ b/fs/xfs/linux-2.6/xfs_sync.c
> @@ -460,8 +460,8 @@ xfs_quiesce_fs(
> {
> int count = 0, pincount;
>
> + xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI);
> xfs_flush_buftarg(mp->m_ddev_targp, 0);
> - xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI_ELSE_ASYNC);
Hmm. I think the current code here is simply wrong. We do need to
flush all delwri buffers after the inode reclaim. Maybe we should
get this hunk in for .33?
> - xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI_ELSE_ASYNC);
> + xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI);
> /* dgc: errors ignored here */
> error = xfs_qm_sync(mp, SYNC_TRYLOCK);
> error = xfs_sync_fsdata(mp, SYNC_TRYLOCK);
> @@ -687,7 +687,7 @@ xfs_reclaim_inode(
> spin_unlock(&ip->i_flags_lock);
> write_unlock(&pag->pag_ici_lock);
> xfs_perag_put(pag);
> - return -EAGAIN;
> + return EAGAIN;
Unrelated bug in the upsteam code. But your inode direct reclaim
changes should sort this out already.
> @@ -3012,16 +3001,6 @@ xfs_iflush_int(
> iip = ip->i_itemp;
> mp = ip->i_mount;
>
> -
> - /*
> - * If the inode isn't dirty, then just release the inode
> - * flush lock and do nothing.
> - */
> - if (xfs_inode_clean(ip)) {
> - xfs_ifunlock(ip);
> - return 0;
> - }
> -
while we now have this check in xfs_reclaim_inode there still are
various other callers. Did you audit them all to make sure we don't
need the check here anymore?
> index 223d9c3..16c4654 100644
> --- a/fs/xfs/xfs_mount.c
> +++ b/fs/xfs/xfs_mount.c
> @@ -1444,7 +1444,14 @@ xfs_unmountfs(
> * need to force the log first.
> */
> xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE | XFS_LOG_SYNC);
> - xfs_reclaim_inodes(mp, XFS_IFLUSH_ASYNC);
> +
> + /*
> + * flush the delwri buffers before the reclaim so that it doesn't
> + * block for a long time waiting to reclaim inodes that are already
> + * in the delwri state.
> + */
> + XFS_bflush(mp->m_ddev_targp);
> + xfs_reclaim_inodes(mp, XFS_IFLUSH_SYNC);
Wouldn't it be more efficient to also write them out delwri and then
flush out the delwri queue again?
Either way the current code seems fishy to me with an async writeout
here.
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next prev parent reply other threads:[~2010-01-08 10:35 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-05 0:04 [PATCH 0/3] Kill async inode writeback V2 Dave Chinner
2010-01-05 0:04 ` [PATCH 1/3] xfs: Use delayed write for inodes rather than async Dave Chinner
2010-01-08 10:36 ` Christoph Hellwig [this message]
2010-01-08 11:05 ` Dave Chinner
2010-01-08 11:14 ` Christoph Hellwig
2010-01-05 0:04 ` [PATCH 2/3] xfs: Don't issue buffer IO direct from AIL push Dave Chinner
2010-01-08 11:07 ` Christoph Hellwig
2010-01-08 11:15 ` Dave Chinner
2010-01-05 0:04 ` [PATCH 3/3] xfs: Sort delayed write buffers before dispatch Dave Chinner
2010-01-08 11:11 ` Christoph Hellwig
2010-01-08 11:17 ` Dave Chinner
2010-01-06 18:08 ` [PATCH 0/3] Kill async inode writeback V2 Christoph Hellwig
2010-01-06 22:49 ` Dave Chinner
2010-01-08 10:14 ` Christoph Hellwig
-- strict thread matches above, loose matches on Subject: below --
2010-01-02 3:03 [RFC, PATCH 0/3] Kill async inode writeback Dave Chinner
2010-01-02 3:03 ` [PATCH 1/3] XFS: Use delayed write for inodes rather than async Dave Chinner
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=20100108103620.GA11769@infradead.org \
--to=hch@infradead.org \
--cc=david@fromorbit.com \
--cc=xfs@oss.sgi.com \
/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