All of lore.kernel.org
 help / color / mirror / Atom feed
From: Artem Bityutskiy <dedekind1@gmail.com>
To: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Linux Kernel Maling List <linux-kernel@vger.kernel.org>,
	Linux FS Maling List <linux-fsdevel@vger.kernel.org>,
	Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Subject: Re: [PATCH v2 4/4] fat: switch to fsinfo_inode
Date: Sat, 14 Apr 2012 13:29:37 +0300	[thread overview]
Message-ID: <1334399379.2263.8.camel@koala> (raw)
In-Reply-To: <87fwc6hazv.fsf@devron.myhome.or.jp>

[-- Attachment #1: Type: text/plain, Size: 2723 bytes --]

On Sat, 2012-04-14 at 19:19 +0900, OGAWA Hirofumi wrote:
> Artem Bityutskiy <dedekind1@gmail.com> writes:
> 
> > From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
> >
> > Currently FAT file-system maps the VFS "superblock" abstraction to the FSINFO
> > block. The FSINFO block contains non-essential data about the amount of free
> > clusters and the next free cluster. FAT file-system can always find out this
> > information by scanning the FAT table, but having it in the FSINFO block may
> > speed things up sometimes. So FAT file-system relies on the VFS superblock
> > write-out services to make sure the FSINFO block is written out to the media
> > from time to time.
> >
> > The whole "superblock write-out" VFS infrastructure is served by the
> > 'sync_supers()' kernel thread, which wakes up every 5 (by default) seconds and
> > writes out all dirty superblock using the '->write_super()' call-back. But the
> > problem with this thread is that it wastes power by waking up the system every
> > 5 seconds no matter what. So we want to kill it completely and thus, we need to
> > make file-systems to stop using the '->write_super' VFS service, and then
> > remove it together with the kernel thread.
> >
> > This patch switches the FAT FSINFO block management from
> > '->write_super()'/'->s_dirt' to 'fsinfo_inode'/'->write_inode'. Now, instead of
> > setting the 's_dirt' flag, we just mark the special 'fsinfo_inode' inode as
> > dirty and let VFS invoke the '->write_inode' call-back when needed, where we
> > write-out the FSINFO block.
> >
> > This patch also makes sure we do not mark the 'fsinfo_inode' inode as dirty if
> > we are not FAT32 (FAT16 and FAT12 do not have the FSINFO block) or if we are in
> > R/O mode.
> >
> > As a bonus, we can also remove the '->sync_fs()' and '->write_super()' FAT
> > call-back function because they become unneeded.
> 
> Hm, does this guarantee to flush FSINFO at umount?

Of course, and I checked it. It is just a dirty inode. If you do not
worry that any other inode won't get written-beck, then you should not
worry about this one.

> FSINFO is last part of data dependency. I.e. inode change can dirty
> FSINFO. So, FSINFO has to be flushed after normal inodes.

Sorry, I do not see how this can be true. You have a just bunch of dirty
inodes, and it does not matter in which order you flush them. See
__fat_write_inode() - it does not change the FAT table and does not
affect the FSINFO block.

Besides, the _current_ code first writes out FSINFO, because VFS calls
->sync_fs() first, then it starts writing back, then VFS calls
->sync_fs() for the second time.

-- 
Best Regards,
Artem Bityutskiy

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 490 bytes --]

  reply	other threads:[~2012-04-14 10:29 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-13 14:19 [PATCH v2 v2 0/4] do not use s_dirt in FAT FS Artem Bityutskiy
2012-04-13 14:19 ` [PATCH v2 1/4] fat: introduce special inode for managing the FSINFO block Artem Bityutskiy
2012-04-13 14:19 ` [PATCH v2 2/4] fat: introduce mark_fsinfo_dirty helper Artem Bityutskiy
2012-04-13 14:19 ` [PATCH v2 3/4] fat: mark superblock as dirty less often Artem Bityutskiy
2012-04-14  9:17   ` OGAWA Hirofumi
2012-04-14 10:24     ` Artem Bityutskiy
2012-04-14 10:37       ` OGAWA Hirofumi
2012-04-14 11:08         ` Artem Bityutskiy
2012-04-13 14:19 ` [PATCH v2 4/4] fat: switch to fsinfo_inode Artem Bityutskiy
2012-04-14 10:19   ` OGAWA Hirofumi
2012-04-14 10:29     ` Artem Bityutskiy [this message]
2012-04-14 10:36       ` OGAWA Hirofumi
2012-04-14 11:01         ` Artem Bityutskiy
2012-04-14 11:51           ` OGAWA Hirofumi
2012-04-14 12:36             ` Artem Bityutskiy
2012-04-14 13:12               ` OGAWA Hirofumi
2012-04-14 13:54                 ` Artem Bityutskiy
2012-05-04 10:13                 ` 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=1334399379.2263.8.camel@koala \
    --to=dedekind1@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=artem.bityutskiy@linux.intel.com \
    --cc=hirofumi@mail.parknet.co.jp \
    --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.