Re: o_sync in vfat driver

From: Chris Mason
Date: Thu Mar 02 2006 - 11:59:15 EST


On Thursday 02 March 2006 09:07, OGAWA Hirofumi wrote:
> Chris Mason <mason@xxxxxxxx> writes:
> > filemap_fdatawrite() won't redirty the page. It will wait on the pending
> > writeback.
>
> Umm... I'm looking the following code.
>
> +void
> +writeback_bdev(struct super_block *sb)
> +{
> + struct address_space *mapping = sb->s_bdev->bd_inode->i_mapping;
> + filemap_flush(mapping);
> + blk_run_address_space(mapping);
> +}
> +EXPORT_SYMBOL_GPL(writeback_bdev);
>
> filemap_flush() is using WB_SYNC_NONE.
>
Ok, I thought you were asking about the code that called filemap_fdatawrite,
which does wait. filemap_flush is used on the underlying block device. In
the case of a page that is already under IO, the io is not cancelled but
allowed to continue.

This is the desired result. When you're doing a number of operations in
sequence, each operation will start io on the block device. If they used
filemap_fdatawrite instead of filemap_flush, they would end up being
synchronous.

-chris

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/