All of lore.kernel.org
 help / color / mirror / Atom feed
From: Fengguang Wu <wfg@mail.ustc.edu.cn>
To: David Chinner <dgc@sgi.com>
Cc: Andrew Morton <akpm@osdl.org>, Michael Rubin <mrubin@google.com>,
	Peter Zijlstra <peterz@infradead.org>,
	linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 09/13] writeback: requeue_io() on redirtied inode
Date: Thu, 17 Jan 2008 12:22:38 +0800	[thread overview]
Message-ID: <400543799.23158@ustc.edu.cn> (raw)
Message-ID: <E1JFMH1-0001xA-L1@localhost.localdomain> (raw)
In-Reply-To: <20080116081307.GX155407@sgi.com>

On Wed, Jan 16, 2008 at 07:13:07PM +1100, David Chinner wrote:
> On Tue, Jan 15, 2008 at 08:36:46PM +0800, Fengguang Wu wrote:
> > Redirtied inodes could be seen in really fast writes.
> > They should really be synced as soon as possible.
> > 
> > redirty_tail() could delay the inode for up to 30s.
> > Kill the delay by using requeue_io() instead.
> 
> That's actually bad for anything that does delayed allocation
> or updates state on data I/o completion.
> 
> e.g. XFS when writing past EOF doing delalloc dirties the inode
> during writeout (allocation) and then updates the file size on data
> I/o completion hence dirtying the inode again.
> 
> With this change, writing the last pages out would result
> in hitting this code and causing the inode to be flushed very
> soon after the data write. Then, after the inode write is issued,
> we get data I/o completion which dirties the inode again,
> resulting in needing to write the inode again to clean it.
> i.e. it introduces a potential new and useless inode write
> I/O.
> 
> Also, the immediate inode write may be useless for XFS because the
> inode may be pinned in memory due to async transactions
> still in flight (e.g. from delalloc) so we've got two
> situations where flushing the inode immediately is suboptimal.
> 
> Hence I don't think this is an optimisation that should be made
> in the generic writeback code.

Thanks for the explanation.
I can confirm that many requeue_io() happened for the same XFS inode:
[  158.794562] requeue_io 328: inode 5243009 size 34647 at 03:03(hda3)
[  158.794827] mm/page-writeback.c 668 wb_kupdate: pdflush(183) 14209 global 486 10 0 wc _M tw 1013 sk 0
[  158.795293] requeue_io 328: inode 5243009 size 34647 at 03:03(hda3)
[  158.795313] mm/page-writeback.c 668 wb_kupdate: pdflush(183) 14198 global 486 10 0 wc _M tw 1024 sk 0
...
[  170.713900] requeue_io 328: inode 5243009 size 34647 at 03:03(hda3)
[  170.713925] mm/page-writeback.c 668 wb_kupdate: pdflush(183) 14198 global 1875 0 0 wc _M tw 1024 sk 0
[  170.813584] mm/page-writeback.c 668 wb_kupdate: pdflush(183) 14198 global 2855 0 0 wc __ tw 1024 sk 0


  reply	other threads:[~2008-01-17  4:23 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-15 12:36 [PATCH 00/13] writeback bug fixes and simplifications take 2 Fengguang Wu
2008-01-15 12:36 ` Fengguang Wu
2008-01-15 18:33   ` Michael Rubin
2008-01-16  2:18     ` Fengguang Wu
2008-01-16  2:18       ` Fengguang Wu
2008-01-18  7:51   ` Michael Rubin
2008-01-18  8:27     ` Fengguang Wu
2008-01-18  8:27       ` Fengguang Wu
2008-01-15 12:36 ` [PATCH 01/13] writeback: revert 2e6883bdf49abd0e7f0d9b6297fc3be7ebb2250b Fengguang Wu
2008-01-15 12:36   ` Fengguang Wu
2008-01-15 12:36 ` [PATCH 02/13] writeback: clear PAGECACHE_TAG_DIRTY for truncated page in block_write_full_page() Fengguang Wu
2008-01-15 12:36   ` Fengguang Wu
2008-01-15 12:36 ` [PATCH 03/13] writeback: introduce writeback_control.more_io Fengguang Wu
2008-01-15 12:36   ` Fengguang Wu
2008-01-15 12:36 ` [PATCH 04/13] writeback: introduce super_block.s_more_io_wait Fengguang Wu
2008-01-15 12:36   ` Fengguang Wu
2008-01-15 12:36 ` [PATCH 05/13] writeback: merge duplicate code into writeback_some_pages() Fengguang Wu
2008-01-15 12:36   ` Fengguang Wu
2008-01-15 12:36 ` [PATCH 06/13] writeback: defer writeback on not-all-pages-written Fengguang Wu
2008-01-15 12:36   ` Fengguang Wu
2008-01-15 12:36 ` [PATCH 07/13] writeback: defer writeback on locked inode Fengguang Wu
2008-01-15 12:36   ` Fengguang Wu
2008-01-15 12:36 ` [PATCH 08/13] writeback: defer writeback on locked buffers Fengguang Wu
2008-01-15 12:36   ` Fengguang Wu
2008-01-15 12:36 ` [PATCH 09/13] writeback: requeue_io() on redirtied inode Fengguang Wu
2008-01-15 12:36   ` Fengguang Wu
2008-01-16  8:13   ` David Chinner
2008-01-17  4:22     ` Fengguang Wu [this message]
2008-01-17  4:22       ` Fengguang Wu
2008-01-15 12:36 ` [PATCH 10/13] writeback: introduce queue_dirty() Fengguang Wu
2008-01-15 12:36   ` Fengguang Wu
2008-01-15 12:36 ` [PATCH 11/13] writeback: queue_dirty() on memory-backed bdi Fengguang Wu
2008-01-15 12:36   ` Fengguang Wu
2008-01-15 12:36 ` [PATCH 12/13] writeback: remove redirty_tail() Fengguang Wu
2008-01-15 12:36   ` Fengguang Wu
2008-01-15 12:36   ` Fengguang Wu
2008-01-15 12:36 ` [PATCH 13/13] writeback: cleanup __sync_single_inode() Fengguang Wu
2008-01-15 12:36   ` Fengguang Wu

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=400543799.23158@ustc.edu.cn \
    --to=wfg@mail.ustc.edu.cn \
    --cc=akpm@osdl.org \
    --cc=dgc@sgi.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mrubin@google.com \
    --cc=peterz@infradead.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.