[patch]ext4: add block plug for .writepages

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

 



On Mon, 2011-09-26 at 17:45 +0800, Christoph Hellwig wrote:
> On Mon, Sep 26, 2011 at 03:38:47PM +0800, Shaohua Li wrote:
> > On Mon, 2011-09-26 at 15:30 +0800, Christoph Hellwig wrote:
> > > On Mon, Sep 26, 2011 at 10:30:26AM +0800, Shaohua Li wrote:
> > > > Some filesystems implement .writepages. We don't have blk plug
> > > > in such filesystems for .writepages.
> > > 
> > > Please add the plugging in the actual ->writepages instances.
> > there are several filesystems have ->writepages. Can you share an hint
> > why we don't add plugging in the do_writepages?
> 
> Because do_writepages is completely generic code with no knowledge of
> block I/O.  I really don't want to have block plugging be intimately
> tied into core VM/writeback code all over.  We've been there with
> ->sync_page, and it was a major pain - nevermind the additional (small)
> overhead for the not block based filesystems.
I searched a little bit, looks only ext4 need it. here is the patch.


Add block plug for ext4 .writepages. Though ext4 .writepages
already handles request merge very well, block plug is still
helpful to reduce block lock contention.

Signed-off-by: Shaohua Li <shaohua.li@xxxxxxxxx>

---
 fs/ext4/inode.c |    3 +++
 1 file changed, 3 insertions(+)

Index: linux/fs/ext4/inode.c
===================================================================
--- linux.orig/fs/ext4/inode.c	2011-09-28 10:13:50.000000000 +0800
+++ linux/fs/ext4/inode.c	2011-09-28 10:23:31.000000000 +0800
@@ -2046,6 +2046,7 @@ static int ext4_da_writepages(struct add
 	struct ext4_sb_info *sbi = EXT4_SB(mapping->host->i_sb);
 	pgoff_t done_index = 0;
 	pgoff_t end;
+	struct blk_plug plug;
 
 	trace_ext4_da_writepages(inode, wbc);
 
@@ -2124,6 +2125,7 @@ retry:
 	if (wbc->sync_mode == WB_SYNC_ALL || wbc->tagged_writepages)
 		tag_pages_for_writeback(mapping, index, end);
 
+	blk_start_plug(&plug);
 	while (!ret && wbc->nr_to_write > 0) {
 
 		/*
@@ -2188,6 +2190,7 @@ retry:
 			 */
 			break;
 	}
+	blk_finish_plug(&plug);
 	if (!io_done && !cycled) {
 		cycled = 1;
 		index = 0;


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


[Index of Archives]     [Reiser Filesystem Development]     [Ceph FS]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite National Park]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]     [Linux Media]

  Powered by Linux