Re: [PATCH, RFC] Add new "development flag" to the ext4 filesystem

Andreas Dilger
2008-01-25T20:24:25Z

On Jan 25, 2008 11:05 +0100, Jan Kara wrote:
> For example ext2 on fsync() just sync's a single inode
> (and has to use private_list to track metadata buffers associated with
> the inode) while ext3 flushes the whole journal.

As for fsync(), we definitely need to preserve correct behaviour for the
file itself, but there isn't a requirement that ext2 behave exactly like
ext3 (it of course cannot). In the proposed ext4-mount-unjournaled-ext2
case, the superblock would be marked dirty as it is today and an e2fsck
would need to be run at boot time. That is fine so long as the fsync()
will cause the one file's data to be on disk before it returns.

> In ext2, directory
> handling code is quite different. ext2 works in page cache of the
> directory while ext3 uses page cache of the underlying device via buffer
> heads - at least this second thing would be more or less mechanical
> thing to change and would make sence (we wouldn't have to reimplement
> readahead in ext3 directory handling code as we do now). I've looked at
> it once but then more urgent things came and ... you know it.

I don't think it is a requirement that ext3 mounting a filesystem without
a journal has to use page cache for directories. I wouldn't object to
that being fixed. It definitely isn't a requirement for this to work,
just an implementation difference.

Cheers, Andreas
--
Andreas Dilger
Sr. Staff Engineer, Lustre Group
Sun Microsystems of Canada, Inc.