From: Artem Bityutskiy <dedekind@yandex.ru>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>,
LKML <linux-kernel@vger.kernel.org>,
Adrian Hunter <ext-adrian.hunter@nokia.com>,
Edward Shishkin <edward.shishkin@gmail.com>,
Christoph Hellwig <hch@infradead.org>
Subject: Re: [PATCH take 2 01/28] VFS: introduce writeback_inodes_sb()
Date: Wed, 07 May 2008 14:14:41 +0300 [thread overview]
Message-ID: <48218F21.4090304@yandex.ru> (raw)
In-Reply-To: <20080507002345.831bc379.akpm@linux-foundation.org>
[-- Attachment #1: Type: text/plain, Size: 657 bytes --]
Hi Andrew,
Andrew Morton wrote:
> This looks rather similar to
> http://userweb.kernel.org/~akpm/mmotm/broken-out/reiser4-sb_sync_inodes.patch
>
> Which is best?
Well, this reiser4 patch is basically doing 3 things at once:
1. Introduce ->sync_inodes()
2. Move spin_lock(&inode_lock);
3. Export generic_sync_sb_inodes()
As Christoph suggested, I've attached a patch which just moves the
spinlock. Could you please consider sending it to Linus or taking into your tree?
Should I amend the reiser4 patch correspondingly for you?
Also, what do you think about taking UBIFS into your tree?
--
Best Regards,
Artem Bityutskiy (Артём Битюцкий)
[-- Attachment #2: 0001-VFS-move-inode_lock-into-sync_sb_inodes.patch --]
[-- Type: text/x-patch, Size: 2397 bytes --]
>From d6caf6c109cc21e88bbe165f144574c736e85c2b Mon Sep 17 00:00:00 2001
From: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Date: Wed, 7 May 2008 15:48:57 +0300
Subject: [PATCH] VFS: move inode_lock into sync_sb_inodes
This patch makes 'sync_sb_inodes()' lock 'inode_lock', rather
than expect that the caller will do this.
This change was previously done by Hans Reiser <reiser@namesys.com>
and sat in the -mm tree.
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
---
fs/fs-writeback.c | 11 +++--------
1 files changed, 3 insertions(+), 8 deletions(-)
diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
index ae45f77..16519fe 100644
--- a/fs/fs-writeback.c
+++ b/fs/fs-writeback.c
@@ -424,8 +424,6 @@ __writeback_single_inode(struct inode *inode, struct writeback_control *wbc)
* WB_SYNC_HOLD is a hack for sys_sync(): reattach the inode to sb->s_dirty so
* that it can be located for waiting on in __writeback_single_inode().
*
- * Called under inode_lock.
- *
* If `bdi' is non-zero then we're being asked to writeback a specific queue.
* This function assumes that the blockdev superblock's inodes are backed by
* a variety of queues, so all inodes are searched. For other superblocks,
@@ -446,6 +444,7 @@ sync_sb_inodes(struct super_block *sb, struct writeback_control *wbc)
{
const unsigned long start = jiffies; /* livelock avoidance */
+ spin_lock(&inode_lock);
if (!wbc->for_kupdate || list_empty(&sb->s_io))
queue_io(sb, wbc->older_than_this);
@@ -524,6 +523,7 @@ sync_sb_inodes(struct super_block *sb, struct writeback_control *wbc)
if (!list_empty(&sb->s_more_io))
wbc->more_io = 1;
}
+ spin_unlock(&inode_lock);
return; /* Leave any unwritten inodes on s_io */
}
@@ -565,11 +565,8 @@ restart:
* be unmounted by the time it is released.
*/
if (down_read_trylock(&sb->s_umount)) {
- if (sb->s_root) {
- spin_lock(&inode_lock);
+ if (sb->s_root)
sync_sb_inodes(sb, wbc);
- spin_unlock(&inode_lock);
- }
up_read(&sb->s_umount);
}
spin_lock(&sb_lock);
@@ -607,9 +604,7 @@ void sync_inodes_sb(struct super_block *sb, int wait)
(inodes_stat.nr_inodes - inodes_stat.nr_unused) +
nr_dirty + nr_unstable;
wbc.nr_to_write += wbc.nr_to_write / 2; /* Bit more for luck */
- spin_lock(&inode_lock);
sync_sb_inodes(sb, &wbc);
- spin_unlock(&inode_lock);
}
/*
--
1.5.4.1
next prev parent reply other threads:[~2008-05-07 11:15 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-06 10:35 [PATCH take 2] UBIFS - new flash file system Artem Bityutskiy
2008-05-06 10:35 ` [PATCH take 2 01/28] VFS: introduce writeback_inodes_sb() Artem Bityutskiy
2008-05-07 7:23 ` Andrew Morton
2008-05-07 8:00 ` Christoph Hellwig
2008-05-13 8:31 ` Artem Bityutskiy
2008-05-13 8:59 ` Christoph Hellwig
2008-05-13 9:22 ` Artem Bityutskiy
2008-05-07 11:14 ` Artem Bityutskiy [this message]
2008-05-07 12:01 ` Artem Bityutskiy
2008-05-07 15:38 ` Andrew Morton
2008-05-07 16:55 ` Artem Bityutskiy
2008-05-08 10:11 ` Artem Bityutskiy
2008-05-20 12:45 ` Artem Bityutskiy
2008-05-20 17:49 ` Andrew Morton
2008-05-22 10:53 ` Artem Bityutskiy
2008-05-22 11:00 ` Artem Bityutskiy
2008-05-06 10:35 ` [PATCH take 2 02/28] do_mounts: allow UBI root device name Artem Bityutskiy
2008-05-06 10:35 ` [PATCH take 2 03/28] UBIFS: add brief documentation Artem Bityutskiy
2008-05-06 10:35 ` [PATCH take 2 04/28] UBIFS: add I/O sub-system Artem Bityutskiy
2008-05-06 10:35 ` [PATCH take 2 05/28] UBIFS: add flash scanning Artem Bityutskiy
2008-05-06 10:35 ` [PATCH take 2 06/28] UBIFS: add journal replay Artem Bityutskiy
2008-05-06 22:05 ` Marcin Slusarz
2008-05-07 5:57 ` Artem Bityutskiy
2008-05-06 10:35 ` [PATCH take 2 07/28] UBIFS: add file-system build Artem Bityutskiy
2008-05-06 10:35 ` [PATCH take 2 08/28] UBIFS: add superblock and master node Artem Bityutskiy
2008-05-06 23:48 ` Kyungmin Park
2008-05-07 6:07 ` Artem Bityutskiy
2008-05-06 10:35 ` [PATCH take 2 09/28] UBIFS: add file-system recovery Artem Bityutskiy
2008-05-06 10:35 ` [PATCH take 2 10/28] UBIFS: add compression support Artem Bityutskiy
2008-05-06 10:35 ` [PATCH take 2 11/28] UBIFS: add key helpers Artem Bityutskiy
2008-05-06 10:35 ` [PATCH take 2 12/28] UBIFS: add the journal Artem Bityutskiy
2008-05-06 10:35 ` [PATCH take 2 13/28] UBIFS: add commit functionality Artem Bityutskiy
2008-05-06 10:35 ` [PATCH take 2 14/28] UBIFS: add TNC implementation Artem Bityutskiy
2008-05-06 10:35 ` [PATCH take 2 15/28] UBIFS: add TNC commit implementation Artem Bityutskiy
2008-05-06 10:35 ` [PATCH take 2 16/28] UBIFS: add TNC shrinker Artem Bityutskiy
2008-05-06 10:35 ` [PATCH take 2 17/28] UBIFS: add LEB properties Artem Bityutskiy
2008-05-06 10:35 ` [PATCH take 2 18/28] UBIFS: add LEB properties tree Artem Bityutskiy
2008-05-06 10:35 ` [PATCH take 2 19/28] " Artem Bityutskiy
2008-05-06 10:35 ` [PATCH take 2 20/28] UBIFS: add LEB find subsystem Artem Bityutskiy
2008-05-06 10:35 ` [PATCH take 2 21/28] UBIFS: add Garbage Collector Artem Bityutskiy
2008-05-06 10:35 ` [PATCH take 2 22/28] UBIFS: add VFS operations Artem Bityutskiy
2008-05-06 10:35 ` [PATCH take 2 23/28] UBIFS: add budgeting Artem Bityutskiy
2008-05-06 10:35 ` [PATCH take 2 24/28] UBIFS: add extended attribute support Artem Bityutskiy
2008-05-06 10:35 ` [PATCH take 2 25/28] UBIFS: add orphans handling sub-system Artem Bityutskiy
2008-05-06 10:35 ` [PATCH take 2 26/28] UBIFS: add header files Artem Bityutskiy
2008-05-06 10:35 ` [PATCH take 2 27/28] UBIFS: add debugging stuff Artem Bityutskiy
2008-05-06 10:35 ` [PATCH take 2 28/28] UBIFS: include FS to compilation Artem Bityutskiy
2008-05-07 8:01 ` [PATCH take 2] UBIFS - new flash file system Christoph Hellwig
2008-05-07 8:07 ` Artem Bityutskiy
2008-05-07 8:10 ` Christoph Hellwig
2008-05-07 8:11 ` Artem Bityutskiy
2008-05-07 8:32 ` Artem Bityutskiy
2008-05-07 10:31 ` Artem Bityutskiy
2008-05-16 10:40 ` Christoph Hellwig
2008-05-16 13:10 ` Adrian Hunter
2008-05-19 11:30 ` Artem Bityutskiy
2008-05-19 12:36 ` Andi Kleen
2008-05-23 15:18 ` Artem Bityutskiy
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=48218F21.4090304@yandex.ru \
--to=dedekind@yandex.ru \
--cc=Artem.Bityutskiy@nokia.com \
--cc=akpm@linux-foundation.org \
--cc=edward.shishkin@gmail.com \
--cc=ext-adrian.hunter@nokia.com \
--cc=hch@infradead.org \
--cc=linux-kernel@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox