[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20091119153419.GB2943@atrey.karlin.mff.cuni.cz>
Date: Thu, 19 Nov 2009 16:34:19 +0100
From: Jan Kara <jack@...e.cz>
To: Stephen Hemminger <shemminger@...tta.com>
Cc: linux-ext4@...r.kernel.org, hch@...radead.org
Subject: Re: [PATCH 2/2] ext2: add wait flag support to sync_fs
> Make ext2 safer against accidental data loss during removal
> by adding support for waiting for super block update on sync.
> Don't know why this wasn't done originally, all the other file
> systems have it.
>
> Signed-off-by: Stephen Hemminger <shemminger@...tta.com>
>
> --- a/fs/ext2/super.c 2009-11-17 09:14:12.177002522 -0800
> +++ b/fs/ext2/super.c 2009-11-17 09:14:32.698005421 -0800
> @@ -1147,6 +1147,8 @@ static int ext2_sync_fs(struct super_blo
> ext2_sync_super(sb, es);
> } else {
> ext2_commit_super(sb, es);
> + if (wait)
> + sync_dirty_buffer(EXT2_SB(sb)->s_sbh);
> }
> sb->s_dirt = 0;
> unlock_kernel();
Looking at the code it just looks strange. Part of it is because
of Christoph's conversion of ext2_write_super to ext2_sync_fs
(40f31dd47e7c3d15af1f9845eda0fa0c4c33f32f) but the VALID_FS handling
oddness seems to be even older. IMHO we should just clear the VALID_FS
flag on mount and in write_super() and sync_fs() just update block and
inode counters. wait == 1 case should then really wait for superblock
buffer, wait == 0 should not wait.
BTW: Christoph, why did you choose to call ext2_sync_fs with wait == 1
from ext2_write_super()? I'd think (and looking into callsites seem to
confirm that) that ->write_super() was meant to be asynchronous...
I've added this to my todo...
Honza
--
Jan Kara <jack@...e.cz>
SuSE CR Labs
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists