From: Artem Bityutskiy <dedekind1@gmail.com>
To: Jan Kara <jack@suse.cz>
Cc: Ext4 Mailing List <linux-ext4@vger.kernel.org>,
Linux FS Maling List <linux-fsdevel@vger.kernel.org>,
Linux Kernel Maling List <linux-kernel@vger.kernel.org>
Subject: [PATCH 8/8] ext2: introduce own superblock dirty flag
Date: Wed, 21 Mar 2012 18:14:35 +0200 [thread overview]
Message-ID: <1332346475-1441-9-git-send-email-dedekind1@gmail.com> (raw)
In-Reply-To: <1332346475-1441-1-git-send-email-dedekind1@gmail.com>
From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
We finally do not need VFS's 's_dirt' flag in ext2 - introduce our own
's_dirty' flag instead.
Note: the final goal is to get rid of the 'sync_supers()' kernel thread which
wakes up every 5 seconds and even if there is nothing to do. Thus, we are
pushing superblock management from VFS down to file-systems.
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
---
fs/ext2/super.c | 16 ++++++++--------
include/linux/ext2_fs_sb.h | 1 +
2 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/fs/ext2/super.c b/fs/ext2/super.c
index 4eee017..bb12634 100644
--- a/fs/ext2/super.c
+++ b/fs/ext2/super.c
@@ -1162,7 +1162,7 @@ static void ext2_sync_super(struct super_block *sb, struct ext2_super_block *es,
{
struct ext2_sb_info *sbi = EXT2_SB(sb);
- sb->s_dirt = 0;
+ sbi->s_dirty = 0;
/*
* Make sure we first mark the superblock as clean and then start
* writing it out.
@@ -1213,7 +1213,7 @@ void ext2_write_super(struct super_block *sb)
if (!(sb->s_flags & MS_RDONLY))
ext2_sync_fs(sb, 1);
else {
- sb->s_dirt = 0;
+ EXT2_SB(sb)->s_dirty = 0;
smp_wmb();
}
}
@@ -1239,7 +1239,7 @@ static void write_super(struct work_struct *work)
kfree(sbwork);
smp_rmb();
- if (sb->s_dirt)
+ if (EXT2_SB(sb)->s_dirty)
return;
ext2_write_super(sb);
@@ -1251,12 +1251,12 @@ void ext2_mark_super_dirty(struct super_block *sb)
struct sb_delayed_work *sbwork;
unsigned long delay;
- /* Make sure we see 's_dirt' changes ASAP */
+ /* Make sure we see 's_dirty' changes ASAP */
smp_rmb();
- if (sb->s_dirt == 1)
+ if (sbi->s_dirty == 1)
return;
- sb->s_dirt = 1;
- /* Make other CPUs see the 's_dirt' change as soon as possible */
+ sbi->s_dirty = 1;
+ /* Make other CPUs see the 's_dirty' change as soon as possible */
smp_wmb();
sbwork = kmalloc(sizeof(struct sb_delayed_work), GFP_NOFS);
@@ -1266,7 +1266,7 @@ void ext2_mark_super_dirty(struct super_block *sb)
* trouble anyway, and the SB will be written out on unmount or
* we may be luckier next time it is marked as dirty.
*/
- sb->s_dirt = 2;
+ sbi->s_dirty = 2;
return;
}
diff --git a/include/linux/ext2_fs_sb.h b/include/linux/ext2_fs_sb.h
index 75aa40e..5938744 100644
--- a/include/linux/ext2_fs_sb.h
+++ b/include/linux/ext2_fs_sb.h
@@ -99,6 +99,7 @@ struct ext2_sb_info {
u32 s_next_generation;
unsigned long s_dir_count;
u8 *s_debts;
+ int s_dirty;
/* workqueue for synchronizing the superblock */
struct workqueue_struct *sync_super_wq;
struct percpu_counter s_freeblocks_counter;
--
1.7.7.6
prev parent reply other threads:[~2012-03-21 16:14 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-21 16:14 [PATCH v1 0/8] do not use s_dirt in ext2 Artem Bityutskiy
2012-03-21 16:14 ` [PATCH 1/8] mm: export dirty_writeback_interval Artem Bityutskiy
2012-03-21 16:14 ` [PATCH 2/8] VFS: remove unused superblock helpers Artem Bityutskiy
2012-03-21 16:14 ` Artem Bityutskiy
2012-03-21 16:14 ` [PATCH 3/8] ext2: write superblock only once on unmount Artem Bityutskiy
2012-03-31 11:53 ` Jan Kara
2012-04-02 13:44 ` Artem Bityutskiy
2012-04-02 22:10 ` Jan Kara
2012-03-21 16:14 ` [PATCH 4/8] ext2: intruduce ext2_mark_super_dirty Artem Bityutskiy
2012-03-21 16:14 ` [PATCH 5/8] ext2: introduce workqueue for superblock synchronization Artem Bityutskiy
2012-03-21 16:14 ` [PATCH 6/8] ext2: stop using VFS for dirty superblock management Artem Bityutskiy
2012-03-21 16:14 ` [PATCH 7/8] ext2: cleanup ext2_sync_super a bit Artem Bityutskiy
2012-03-21 16:14 ` Artem Bityutskiy [this message]
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=1332346475-1441-9-git-send-email-dedekind1@gmail.com \
--to=dedekind1@gmail.com \
--cc=jack@suse.cz \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.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 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.