Messages in this thread | | | Date | Thu, 31 Oct 2002 12:26:14 -0500 (EST) | From | Alexander Viro <> | Subject | Re: [PATCH]: reiser4 [8/8] reiser4 code |
| |
On Thu, 31 Oct 2002, Nikita Danilov wrote:
> generic_shutdown_super() calls fsync_super(sb) (which will call > ->writepage() on each dirty page) and then invalidate_inodes(). > > Reiser4 has commit out-standing transactions -between- these two points: > after ->writepage() has been called on all dirty pages, but before > inodes were destroyed. Thus, we cannot use > kill_block_super()/generic_shutdown_super().
Why don't you do that from within fsync_super()? That would be much more natural point for such stuff...
I hadn't looked into akpm's stuff in fs-writeback.c for a while, but if one can't stick such flush point in there I'd argue that this is a bug that needs to be fixed - either there or by providing explicit callback from fsync_super().
Note that sync(2) doesn't get anywhere near your ->kill_sb() code, so you want fsync_super() do the right thing anyway - regardless of the umount(2) situation.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |