Hi,

I think short circuiting data_unlock requests in ext2fs (by allocating
the page in file_pager_read_page and returning it unlocked) could
improve file growing performance a bit.

I've tested it in qemu (with kvm), using "dd" to sequentially write
blocks to a file, obtaining an improvement of 10%. I'd like to test it
in real hardware, but currently I don't have a spare machine to do
that. If someone can try it (it's a small patch, and it just requires
to rebuild ext2fs), please let us know the results.

Thanks!
--- ext2fs/pager.c.orig	2010-05-11 18:40:40.000000000 +0200
+++ ext2fs/pager.c	2010-05-11 18:42:27.000000000 +0200
@@ -250,7 +250,11 @@
       if (block == 0)
 	/* Reading unallocated block, just make a zero-filled one.  */
 	{
-	  *writelock = 1;
+	  if (lock) {
+    		rwlock_reader_unlock (lock);
+		lock = NULL;
+	  }
+	  pager_unlock_page(pager_get_upi(node->dn->pager), page);
 	  if (offs == 0)
 	    /* No page allocated to read into yet.  */
 	    {

Reply via email to