linux-ext4.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Dave Chinner <david@fromorbit.com>
Cc: linux-kernel@vger.kernel.org, xfs@oss.sgi.com,
	linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org,
	tytso@mit.edu, jens.axboe@oracle.com
Subject: Re: [PATCH 4/6] writeback: pay attention to wbc->nr_to_write in write_cache_pages
Date: Thu, 27 May 2010 14:32:51 -0700	[thread overview]
Message-ID: <20100527143251.5193842d.akpm@linux-foundation.org> (raw)
In-Reply-To: <1274784852-30502-5-git-send-email-david@fromorbit.com>

On Tue, 25 May 2010 20:54:10 +1000
Dave Chinner <david@fromorbit.com> wrote:

> From: Dave Chinner <dchinner@redhat.com>
> 
> If a filesystem writes more than one page in ->writepage, write_cache_pages
> fails to notice this and continues to attempt writeback when wbc->nr_to_write
> has gone negative - this trace was captured from XFS:
> 
> 
>     wbc_writeback_start: towrt=1024
>     wbc_writepage: towrt=1024
>     wbc_writepage: towrt=0
>     wbc_writepage: towrt=-1
>     wbc_writepage: towrt=-5
>     wbc_writepage: towrt=-21
>     wbc_writepage: towrt=-85
> 
> This has adverse effects on filesystem writeback behaviour. write_cache_pages()
> needs to terminate after a certain number of pages are written, not after a
> certain number of calls to ->writepage are made.  This is a regression
> introduced by 17bc6c30cf6bfffd816bdc53682dd46fc34a2cf4, but cannot be reverted

It's conventional to identify commits by their title as well as their
hash.  So 17bc6c30cf6bfffd816bdc53682dd46fc34a2cf4 ("vfs: Add
no_nrwrite_index_update writeback control flag").  Because that commit
might have different hashes in different trees, I think.  A Linus idea.

I do this ten times a day - It's a PITA.

> directly due to subsequent bug fixes that have gone in on top of it.
> 
> This commit adds a ->writepage tracepoint inside write_cache_pages() (how the
> above trace was generated) and does the revert manually leaving the subsequent
> bug fixes in tact. ext4 is not affected by this as a previous commit in the

"intact".

> series stops ext4 from using the generic function.
> 
> -			if (nr_to_write > 0) {
> -				nr_to_write--;
> -				if (nr_to_write == 0 &&
> +			if (wbc->nr_to_write > 0) {
> +				if (--wbc->nr_to_write == 0 &&
>  				    wbc->sync_mode == WB_SYNC_NONE) {
>  					/*
>  					 * We stop writing back only if we are
> @@ -974,11 +973,8 @@ continue_unlock:
>  		end = writeback_index - 1;
>  		goto retry;
>  	}
> -	if (!wbc->no_nrwrite_index_update) {
> -		if (wbc->range_cyclic || (range_whole && nr_to_write > 0))
> -			mapping->writeback_index = done_index;
> -		wbc->nr_to_write = nr_to_write;
> -	}
> +	if (wbc->range_cyclic || (range_whole && wbc->nr_to_write > 0))
> +		mapping->writeback_index = done_index;
>  
>  	return ret;

'bout time we fixed that.  I wonder why it took so long to find.

  parent reply	other threads:[~2010-05-27 21:33 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-05-25 10:54 [PATCH 0/6] writeback: tracing and fixes Dave Chinner
2010-05-25 10:54 ` [PATCH 1/6] writeback: initial tracing support Dave Chinner
2010-05-25 11:13   ` Christoph Hellwig
2010-05-27 21:32   ` Andrew Morton
2010-05-28  0:44     ` Dave Chinner
2010-05-28  1:20       ` Steven Rostedt
2010-05-28  1:18     ` Steven Rostedt
2010-05-28  7:45     ` Christoph Hellwig
2010-05-25 10:54 ` [PATCH 2/6] writeback: Add tracing to balance_dirty_pages Dave Chinner
2010-05-25 11:13   ` Christoph Hellwig
2010-05-25 10:54 ` [PATCH 3/6] ext4: Use our own write_cache_pages() Dave Chinner
2010-05-25 13:06   ` tytso
2010-05-25 22:42     ` Dave Chinner
2010-05-25 10:54 ` [PATCH 4/6] writeback: pay attention to wbc->nr_to_write in write_cache_pages Dave Chinner
2010-05-25 11:11   ` Christoph Hellwig
2010-05-27 21:32   ` Andrew Morton [this message]
2010-05-28  0:56     ` Dave Chinner
2010-05-25 10:54 ` [PATCH 5/6] xfs: remove nr_to_write writeback windup Dave Chinner
2010-05-25 11:14   ` Christoph Hellwig
2010-05-25 10:54 ` [PATCH 6/6] writeback: limit write_cache_pages integrity scanning to current EOF Dave Chinner
2010-05-27 21:33   ` Andrew Morton
2010-05-28  1:23     ` Dave Chinner
2010-05-28  5:06     ` Nick Piggin
2010-06-01 15:54     ` Jan Kara

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=20100527143251.5193842d.akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=david@fromorbit.com \
    --cc=jens.axboe@oracle.com \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tytso@mit.edu \
    --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;
as well as URLs for NNTP newsgroup(s).