Thread (36 messages) flat view 36 messages, 3 authors, 2012-04-02

Re: [PATCH v1 0/9] do not use s_dirt in ext4

From: Artem Bityutskiy <dedekind1@gmail.com>
Date: 2012-03-22 10:05:47
Also in: linux-fsdevel, lkml

On Thu, 2012-03-22 at 10:53 +0100, Jan Kara wrote:
On Tue 20-03-12 16:41:20, Artem Bityutskiy wrote:
quoted
This patch-set makes ext4 independent of the VFS superblock management
services. Namely, ext4 does not require to register the 'write_super()' VFS
call-back.

The reason of this exercises is to get rid of the 'sync_supers()' kernel thread
which wakes up every 5 seconds (by default) even if all superblocks are clean.
This is wasteful from power management POW (unnecessary wake-ups).

Note, I tried to optimize 'sync_supers()' instead in 2010, but Al wanted me
to get rid of it instead. See https://lkml.org/lkml/2010/6/6/87
And I think this is right because many file-systems do not need this, for
example btrfs does not use VFS superblock management services at all, so on a
btrfs-based system we currently end-up useless periodic wake-ups source.

Changes for other file-systems are coming later.

The patch-set structure.
1. patches 1,2,3 are independent ext4 cleanups and I ask Ted to merge them as
   soon/long as they are OK. I sent them also independently in order to get
   early comments, but did not get so far, so re-sending.
2. patch 4 exports 'dirty_writeback_interval' and it would be very useful to
   have it merged ASAP to simplify further work
3. patch 5 is also and independent VFS clean-up
4. patches 6-9 actually make ext4 independent on the 'sync_supers()' thread.
  Artem, if you look at places where ext4 sets s_dirt you will notice they
are rather rare events and all of them actually take care of writing
superblock themselves (at least if my memory serves well). So ext4
shouldn't need sync_supers() at all...
Hmm, if there is journal, then ext4 does not initialize the
'->write_super()' VFS call-back and indeed takes care of the SB itself.
Indeed. So 'sync_supers()' wakes up every 5 seconds for nothing.

However, if there is _no_ journal, the 'write_super' is initialized, and
in many places the 's_dirt' flag is set, and thus VFS services seem to
be actively used.

I do not ext4 well enough, but the SB dirtying looks a bit messy, and I
am happy to do some clean-ups, just need a bit more of direction :-)

Thanks!

-- 
Best Regards,
Artem Bityutskiy

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help