All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wu Fengguang <fengguang.wu@intel.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Dave Chinner <david@fromorbit.com>,
	Christoph Hellwig <hch@infradead.org>,
	Martin Bligh <mbligh@google.com>,
	Michael Rubin <mrubin@google.com>,
	Peter Zijlstra <peterz@infradead.org>, Jan Kara <jack@suse.cz>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	"linux-fsdevel@vger.kernel.org" <linux-fsdevel@vger.kernel.org>,
	Linux Memory Management List <linux-mm@kvack.org>,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 6/6] writeback: merge for_kupdate and !for_kupdate cases
Date: Fri, 6 Aug 2010 00:01:24 +0800	[thread overview]
Message-ID: <20100805160124.GA17939@localhost> (raw)
In-Reply-To: <20100712152254.2071ba5f.akpm@linux-foundation.org>

On Tue, Jul 13, 2010 at 06:22:54AM +0800, Andrew Morton wrote:
> On Mon, 12 Jul 2010 23:52:39 +0800
> Wu Fengguang <fengguang.wu@intel.com> wrote:
> 
> > > Also, I'd prefer that the
> > > comments remain somewhat more descriptive of the circumstances that
> > > we are operating under. Comments like "retry later to avoid blocking
> > > writeback of other inodes" is far, far better than "retry later"
> > > because it has "why" component that explains the reason for the
> > > logic. You may remember why, but I sure won't in a few months time....
> 
> me2 (of course).  This code is waaaay too complex to be scrimping on comments.
> 
> > Ah yes the comment is too simple. However the redirty_tail() is not to
> > avoid blocking writeback of other inodes, but to avoid eating 100% CPU
> > on busy retrying a dirty inode/page that cannot perform writeback for
> > a while. (In theory redirty_tail() can still busy retry though, when
> > there is only one single dirty inode.) So how about
> > 
> >         /*
> >          * somehow blocked: avoid busy retrying
> >          */
> 
> That's much too short.  Expand on the "somehow" - provide an example,
> describe the common/expected cause.  Fully explain what the "busy"
> retry _is_ and how it can come about.

It was a long story.. This redirty_tail() was introduced when more_io
is introduced. The initial patch for more_io does not have the
redirty_tail(), and when it's merged, several 100% iowait bug reports
arises:

reiserfs:
        http://lkml.org/lkml/2007/10/23/93

jfs:
        commit 29a424f28390752a4ca2349633aaacc6be494db5
        JFS: clear PAGECACHE_TAG_DIRTY for no-write pages

ext2:
        http://www.spinics.net/linux/lists/linux-ext4/msg04762.html

They are all old bugs hidden in various filesystems that become
"obvious" with the more_io patch. At the time, the ext2 bug is thought
to be "trivial", so you didn't merge that fix. Instead the following
patch with redirty_tail() is merged:

http://www.spinics.net/linux/lists/linux-ext4/msg04507.html

This will in general prevent 100% on ext2 and other possibly unknown FS bugs.

I'll take David's comments and note the above in changelog.

Thanks,
Fengguang

WARNING: multiple messages have this Message-ID (diff)
From: Wu Fengguang <fengguang.wu@intel.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Dave Chinner <david@fromorbit.com>,
	Christoph Hellwig <hch@infradead.org>,
	Martin Bligh <mbligh@google.com>,
	Michael Rubin <mrubin@google.com>,
	Peter Zijlstra <peterz@infradead.org>, Jan Kara <jack@suse.cz>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	"linux-fsdevel@vger.kernel.org" <linux-fsdevel@vger.kernel.org>,
	Linux Memory Management List <linux-mm@kvack.org>,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 6/6] writeback: merge for_kupdate and !for_kupdate cases
Date: Fri, 6 Aug 2010 00:01:24 +0800	[thread overview]
Message-ID: <20100805160124.GA17939@localhost> (raw)
In-Reply-To: <20100712152254.2071ba5f.akpm@linux-foundation.org>

On Tue, Jul 13, 2010 at 06:22:54AM +0800, Andrew Morton wrote:
> On Mon, 12 Jul 2010 23:52:39 +0800
> Wu Fengguang <fengguang.wu@intel.com> wrote:
> 
> > > Also, I'd prefer that the
> > > comments remain somewhat more descriptive of the circumstances that
> > > we are operating under. Comments like "retry later to avoid blocking
> > > writeback of other inodes" is far, far better than "retry later"
> > > because it has "why" component that explains the reason for the
> > > logic. You may remember why, but I sure won't in a few months time....
> 
> me2 (of course).  This code is waaaay too complex to be scrimping on comments.
> 
> > Ah yes the comment is too simple. However the redirty_tail() is not to
> > avoid blocking writeback of other inodes, but to avoid eating 100% CPU
> > on busy retrying a dirty inode/page that cannot perform writeback for
> > a while. (In theory redirty_tail() can still busy retry though, when
> > there is only one single dirty inode.) So how about
> > 
> >         /*
> >          * somehow blocked: avoid busy retrying
> >          */
> 
> That's much too short.  Expand on the "somehow" - provide an example,
> describe the common/expected cause.  Fully explain what the "busy"
> retry _is_ and how it can come about.

It was a long story.. This redirty_tail() was introduced when more_io
is introduced. The initial patch for more_io does not have the
redirty_tail(), and when it's merged, several 100% iowait bug reports
arises:

reiserfs:
        http://lkml.org/lkml/2007/10/23/93

jfs:
        commit 29a424f28390752a4ca2349633aaacc6be494db5
        JFS: clear PAGECACHE_TAG_DIRTY for no-write pages

ext2:
        http://www.spinics.net/linux/lists/linux-ext4/msg04762.html

They are all old bugs hidden in various filesystems that become
"obvious" with the more_io patch. At the time, the ext2 bug is thought
to be "trivial", so you didn't merge that fix. Instead the following
patch with redirty_tail() is merged:

http://www.spinics.net/linux/lists/linux-ext4/msg04507.html

This will in general prevent 100% on ext2 and other possibly unknown FS bugs.

I'll take David's comments and note the above in changelog.

Thanks,
Fengguang

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2010-08-05 16:01 UTC|newest]

Thread overview: 81+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-07-11  2:06 [PATCH 0/6] writeback cleanups and trivial fixes Wu Fengguang
2010-07-11  2:06 ` Wu Fengguang
2010-07-11  2:06 ` Wu Fengguang
2010-07-11  2:06 ` [PATCH 1/6] writeback: take account of NR_WRITEBACK_TEMP in balance_dirty_pages() Wu Fengguang
2010-07-11  2:06   ` Wu Fengguang
2010-07-12 21:52   ` Andrew Morton
2010-07-12 21:52     ` Andrew Morton
2010-07-12 21:52     ` Andrew Morton
2010-07-13  8:58     ` Miklos Szeredi
2010-07-13  8:58       ` Miklos Szeredi
2010-07-15 14:50       ` Wu Fengguang
2010-07-15 14:50         ` Wu Fengguang
2010-07-11  2:06 ` [PATCH 2/6] writeback: reduce calls to global_page_state " Wu Fengguang
2010-07-11  2:06   ` Wu Fengguang
2010-07-11  2:06   ` Wu Fengguang
2010-07-26 15:19   ` Jan Kara
2010-07-26 15:19     ` Jan Kara
2010-07-27  3:59     ` Wu Fengguang
2010-07-27  3:59       ` Wu Fengguang
2010-07-27  9:12       ` Jan Kara
2010-07-27  9:12         ` Jan Kara
2010-07-28  2:04         ` Wu Fengguang
2010-07-28  2:04           ` Wu Fengguang
2010-08-03 14:55   ` Peter Zijlstra
2010-08-03 14:55     ` Peter Zijlstra
2010-07-11  2:06 ` [PATCH 3/6] writeback: avoid unnecessary calculation of bdi dirty thresholds Wu Fengguang
2010-07-11  2:06   ` Wu Fengguang
2010-07-11  2:06   ` Wu Fengguang
2010-07-12 21:56   ` Andrew Morton
2010-07-12 21:56     ` Andrew Morton
2010-07-12 21:56     ` Andrew Morton
2010-07-15 14:55     ` Wu Fengguang
2010-07-15 14:55       ` Wu Fengguang
2010-07-19 21:35   ` Andrew Morton
2010-07-19 21:35     ` Andrew Morton
2010-07-19 21:35     ` Andrew Morton
2010-07-20  3:34     ` Wu Fengguang
2010-07-20  3:34       ` Wu Fengguang
2010-07-20  3:34       ` Wu Fengguang
2010-07-20  4:14       ` Andrew Morton
2010-07-20  4:14         ` Andrew Morton
2010-08-03 15:03   ` Peter Zijlstra
2010-08-03 15:03     ` Peter Zijlstra
2010-08-03 15:10     ` Wu Fengguang
2010-08-03 15:10       ` Wu Fengguang
2010-08-04 16:41     ` Wu Fengguang
2010-08-04 16:41       ` Wu Fengguang
2010-08-04 17:10       ` Peter Zijlstra
2010-08-04 17:10         ` Peter Zijlstra
2010-07-11  2:07 ` [PATCH 4/6] writeback: dont redirty tail an inode with dirty pages Wu Fengguang
2010-07-11  2:07   ` Wu Fengguang
2010-07-12  2:01   ` Dave Chinner
2010-07-12  2:01     ` Dave Chinner
2010-07-12 15:31     ` Wu Fengguang
2010-07-12 15:31       ` Wu Fengguang
2010-07-12 22:13       ` Andrew Morton
2010-07-12 22:13         ` Andrew Morton
2010-07-15 15:35         ` Wu Fengguang
2010-07-15 15:35           ` Wu Fengguang
2010-07-11  2:07 ` [PATCH 5/6] writeback: fix queue_io() ordering Wu Fengguang
2010-07-11  2:07   ` Wu Fengguang
2010-07-11  2:07   ` Wu Fengguang
2010-07-12 22:15   ` Andrew Morton
2010-07-12 22:15     ` Andrew Morton
2010-07-12 22:15     ` Andrew Morton
2010-07-11  2:07 ` [PATCH 6/6] writeback: merge for_kupdate and !for_kupdate cases Wu Fengguang
2010-07-11  2:07   ` Wu Fengguang
2010-07-12  2:08   ` Dave Chinner
2010-07-12  2:08     ` Dave Chinner
2010-07-12 15:52     ` Wu Fengguang
2010-07-12 15:52       ` Wu Fengguang
2010-07-12 22:06       ` Dave Chinner
2010-07-12 22:06         ` Dave Chinner
2010-07-12 22:22       ` Andrew Morton
2010-07-12 22:22         ` Andrew Morton
2010-08-05 16:01         ` Wu Fengguang [this message]
2010-08-05 16:01           ` Wu Fengguang
2010-07-11  2:44 ` [PATCH 0/6] writeback cleanups and trivial fixes Christoph Hellwig
2010-07-11  2:44   ` Christoph Hellwig
2010-07-11  2:50   ` Wu Fengguang
2010-07-11  2:50     ` Wu Fengguang

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=20100805160124.GA17939@localhost \
    --to=fengguang.wu@intel.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=akpm@linux-foundation.org \
    --cc=david@fromorbit.com \
    --cc=hch@infradead.org \
    --cc=jack@suse.cz \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mbligh@google.com \
    --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.