From: Wu Fengguang <fengguang.wu@intel.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Dave Chinner <david@fromorbit.com>,
Wu Fengguang <fengguang.wu@intel.com>,
Christoph Hellwig <hch@infradead.org>, Mel Gorman <mel@csn.ul.ie>,
Chris Mason <chris.mason@oracle.com>,
Jens Axboe <jens.axboe@oracle.com>,
LKML <linux-kernel@vger.kernel.org>,
linux-fsdevel@vger.kernel.org, linux-mm@kvack.org
Subject: [PATCH 6/6] writeback: introduce writeback_control.inodes_written
Date: Thu, 22 Jul 2010 13:09:34 +0800 [thread overview]
Message-ID: <20100722061823.196659592@intel.com> (raw)
In-Reply-To: 20100722050928.653312535@intel.com
[-- Attachment #1: writeback-inodes_written.patch --]
[-- Type: text/plain, Size: 2028 bytes --]
Introduce writeback_control.inodes_written to count successful
->write_inode() calls. A non-zero value means there are some
progress on writeback, in which case more writeback will be tried.
This prevents aborting a background writeback work prematually when
the current set of inodes for IO happen to be metadata-only dirty.
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
---
fs/fs-writeback.c | 5 +++++
include/linux/writeback.h | 1 +
2 files changed, 6 insertions(+)
--- linux-next.orig/fs/fs-writeback.c 2010-07-22 13:07:54.000000000 +0800
+++ linux-next/fs/fs-writeback.c 2010-07-22 13:07:58.000000000 +0800
@@ -379,6 +379,8 @@ writeback_single_inode(struct inode *ino
int err = write_inode(inode, wbc);
if (ret == 0)
ret = err;
+ if (!err)
+ wbc->inodes_written++;
}
spin_lock(&inode_lock);
@@ -628,6 +630,7 @@ static long wb_writeback(struct bdi_writ
wbc.nr_to_write = MAX_WRITEBACK_PAGES;
wbc.pages_skipped = 0;
+ wbc.inodes_written = 0;
trace_wbc_writeback_start(&wbc, wb->bdi);
if (work->sb)
@@ -650,6 +653,8 @@ static long wb_writeback(struct bdi_writ
*/
if (wbc.nr_to_write < MAX_WRITEBACK_PAGES)
continue;
+ if (wbc.inodes_written)
+ continue;
/*
* Nothing written and no more inodes for IO, bail
--- linux-next.orig/include/linux/writeback.h 2010-07-22 11:24:46.000000000 +0800
+++ linux-next/include/linux/writeback.h 2010-07-22 13:07:58.000000000 +0800
@@ -34,6 +34,7 @@ struct writeback_control {
long nr_to_write; /* Write this many pages, and decrement
this for each page written */
long pages_skipped; /* Pages which were not written */
+ long inodes_written; /* Number of inodes(metadata) synced */
/*
* For a_ops->writepages(): is start or end are non-zero then this is
--
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>
next prev parent reply other threads:[~2010-07-22 6:19 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-22 5:09 [PATCH 0/6] [RFC] writeback: try to write older pages first Wu Fengguang
2010-07-22 5:09 ` [PATCH 1/6] writeback: pass writeback_control down to move_expired_inodes() Wu Fengguang
2010-07-23 18:16 ` Jan Kara
2010-07-26 10:44 ` Mel Gorman
2010-08-01 15:23 ` Minchan Kim
2010-07-22 5:09 ` [PATCH 2/6] writeback: the kupdate expire timestamp should be a moving target Wu Fengguang
2010-07-23 18:17 ` Jan Kara
2010-07-26 10:52 ` Mel Gorman
2010-07-26 11:32 ` Wu Fengguang
2010-08-01 15:29 ` Minchan Kim
2010-07-22 5:09 ` [PATCH 3/6] writeback: kill writeback_control.more_io Wu Fengguang
2010-07-23 18:24 ` Jan Kara
2010-07-26 10:53 ` Mel Gorman
2010-08-01 15:34 ` Minchan Kim
2010-08-05 14:50 ` Wu Fengguang
2010-08-05 14:55 ` Wu Fengguang
2010-08-05 14:56 ` Minchan Kim
2010-08-05 15:26 ` Wu Fengguang
2010-07-22 5:09 ` [PATCH 4/6] writeback: sync expired inodes first in background writeback Wu Fengguang
2010-07-23 18:15 ` Jan Kara
2010-07-26 11:51 ` Wu Fengguang
2010-07-26 12:12 ` Jan Kara
2010-07-26 12:29 ` Wu Fengguang
2010-07-26 10:57 ` Mel Gorman
2010-07-26 12:00 ` Wu Fengguang
2010-07-26 12:20 ` Jan Kara
2010-07-26 12:31 ` Wu Fengguang
2010-07-26 12:39 ` Jan Kara
2010-07-26 12:47 ` Wu Fengguang
2010-07-26 12:56 ` Wu Fengguang
2010-07-26 12:59 ` Mel Gorman
2010-07-26 13:11 ` Wu Fengguang
2010-07-27 9:45 ` Mel Gorman
2010-08-01 15:15 ` Minchan Kim
2010-07-22 5:09 ` [PATCH 5/6] writeback: try more writeback as long as something was written Wu Fengguang
2010-07-23 17:39 ` Jan Kara
2010-07-26 12:39 ` Wu Fengguang
2010-07-26 11:01 ` Mel Gorman
2010-07-26 11:39 ` Wu Fengguang
2010-07-22 5:09 ` Wu Fengguang [this message]
2010-07-26 11:04 ` [PATCH 6/6] writeback: introduce writeback_control.inodes_written Mel Gorman
2010-07-23 10:24 ` [PATCH 0/6] [RFC] writeback: try to write older pages first Mel Gorman
2010-07-26 7:18 ` Wu Fengguang
2010-07-26 10:42 ` Mel Gorman
2010-07-26 10:28 ` Itaru Kitayama
2010-07-26 11:47 ` 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=20100722061823.196659592@intel.com \
--to=fengguang.wu@intel.com \
--cc=akpm@linux-foundation.org \
--cc=chris.mason@oracle.com \
--cc=david@fromorbit.com \
--cc=hch@infradead.org \
--cc=jens.axboe@oracle.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mel@csn.ul.ie \
/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).