It occurs to me that now we have the "writepages" operation we might be able to hold a single transaction open across writeback of many pages, only closing the transaction handle when it runs out of credits, in the same manner as the ext3 direct IO code. It'll require that mpage_writepage do a trylock on the page, but I was resigned to having to do that at some point anyway... Nah, scrub that idea. It'll only help MAP_SHARED writeout and nobody does that enough to bother. Let's disable it all for a while while I think about it. fs/ext3/inode.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletion(-) --- 2.5.38/fs/ext3/inode.c~unbreak-writeback-mode Sun Sep 22 11:42:00 2002 +++ 2.5.38-akpm/fs/ext3/inode.c Sun Sep 22 11:42:21 2002 @@ -1474,17 +1474,18 @@ struct address_space_operations ext3_aop /* For writeback mode, we can use mpage_writepages() */ +#if 0 /* Doesn't work for shared mappings */ static int ext3_writepages(struct address_space *mapping, struct writeback_control *wbc) { return mpage_writepages(mapping, wbc, ext3_get_block); } +#endif struct address_space_operations ext3_writeback_aops = { .readpage = ext3_readpage, /* BKL not held. Don't need */ .readpages = ext3_readpages, /* BKL not held. Don't need */ .writepage = ext3_writepage, /* BKL not held. We take it */ - .writepages = ext3_writepages, /* BKL not held. Don't need */ .sync_page = block_sync_page, .prepare_write = ext3_prepare_write, /* BKL not held. We take it */ .commit_write = ext3_commit_write, /* BKL not held. We take it */ _______________________________________________ Ext3-users@redhat.com https://listman.redhat.com/mailman/listinfo/ext3-users