Re: [PATCH 2/7] ext3: call blkdev_issue_flush() on fsync()

Theodore Tso
2009-03-30T14:35:33Z

On Mon, Mar 30, 2009 at 10:15:51AM -0400, Chris Mason wrote:
>
> I'm not sure we want to stick Fernando with changing how barriers are
> done in individual filesystems, his patch is just changing the existing
> call points.

Well, his patch actually added some calls to block_issue_flush(). But
yes, it's probably better if he just changes the existing call points,
and we can have the relevant filesystem maintainers double check to
make sure that there aren't any new call points which are needed.

> The ext34 code is especially tricky because there's no way to tell if a
> commit was actually done by sync_inode, so there's no way to know if an
> extra flush is really required.

Yes, good point. What we need to do is to save inode->i_state
*before* the call to sync_inode(), and issue the flush if the original
value of (inode->i_state & I_DIRTY) == I_DIRTY_PAGES. But yeah,
that's tricky.

> I think we'll be better off if he keeps the existing logic and a
> different patch set is made for tuning the ext3 and ext4 code.

Agreed.

- Ted