[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: Assertion failure in ext3_get_block() at inode.c:853: "handle != 0"



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 */




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]