From: Wu Fengguang <fengguang.wu@intel.com>
To: Trond Myklebust <Trond.Myklebust@netapp.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Jan Kara <jack@suse.cz>, Christoph Hellwig <hch@lst.de>,
Dave Chinner <david@fromorbit.com>,
"Theodore Ts'o" <tytso@mit.edu>,
Chris Mason <chris.mason@oracle.com>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Mel Gorman <mel@csn.ul.ie>, Rik van Riel <riel@redhat.com>,
KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
Greg Thelen <gthelen@google.com>,
Minchan Kim <minchan.kim@gmail.com>,
linux-mm <linux-mm@kvack.org>,
"linux-fsdevel@vger.kernel.org" <linux-fsdevel@vger.kernel.org>,
LKML <linux-kernel@vger.kernel.org>,
"Tang, Feng" <feng.tang@intel.com>
Subject: Re: [PATCH 30/35] nfs: heuristics to avoid commit
Date: Tue, 14 Dec 2010 16:20:50 +0800 [thread overview]
Message-ID: <20101214082050.GC6940@localhost> (raw)
In-Reply-To: <1292273626.8795.19.camel@heimdal.trondhjem.org>
On Tue, Dec 14, 2010 at 04:53:46AM +0800, Trond Myklebust wrote:
> On Mon, 2010-12-13 at 22:47 +0800, Wu Fengguang wrote:
> > plain text document attachment (writeback-nfs-should-commit.patch)
> > The heuristics introduced by commit 420e3646 ("NFS: Reduce the number of
> > unnecessary COMMIT calls") do not work well for large inodes being
> > actively written to.
> >
> > Refine the criterion to
> > - it has gone quiet (all data transfered to server)
> > - has accumulated >= 4MB data to commit (so it will be large IO)
> > - too few active commits (hence active IO) in the server
>
> Where does the number 4MB come from? If I'm writing a 4GB file, I
> certainly do not want to commit every 4MB; that would make for a total
> of 1000 commit requests in addition to the writes. On a 64-bit client
> +server both having loads of memory and connected by a decently a fast
> network, that can be a significant slowdown...
Sorry the description omits too much details..
Let me show you the behavior in real workload first.
http://www.kernel.org/pub/linux/kernel/people/wfg/writeback/tests/3G/nfs-1dd-1M-8p-2952M-2.6.37-rc5+-2010-12-09-03-04/writeback-inode.png
http://www.kernel.org/pub/linux/kernel/people/wfg/writeback/tests/3G/nfs-1dd-1M-8p-2952M-2.6.37-rc5+-2010-12-09-03-04/nfs-commit-300.png
On a 3GB client writing 50MB/s to the NFS server, the write chunk size
and commit size is mostly 32MB and 64MB.
The ->writepages() size and the later commit size actually scales up
to the available write bandwidth ("[PATCH 20/35] writeback: scale IO
chunk size up to device bandwidth").
So the "4MB" here is merely the minimal threshold. I chose it mainly
by the rule of thumb "it's not too bad IO size". And it's mainly used
for the cases:
1) low client=>server write bandwidth
In this case the VFS will call ->writepages() with small (but always
>= 4MB, see patch 20/35) nr_to_write , and the 4MB threshold helps
accumulate to-be-commited pages over multiple ->write_inode() calls.
As you said it will help to further scale this 4MB threshold up to the
client's memory size. But complexity arises in the next case.
2) bandwidth/memory is high, but there are lots of concurrent dd's
When doing 10 dd's with mem=3G, it still achieves 20-30MB write/commit
size:
http://www.kernel.org/pub/linux/kernel/people/wfg/writeback/tests/3G/nfs-10dd-1M-8p-2952M-2.6.37-rc5+-2010-12-09-03-13/writeback-300.png
http://www.kernel.org/pub/linux/kernel/people/wfg/writeback/tests/3G/nfs-10dd-1M-8p-2952M-2.6.37-rc5+-2010-12-09-03-13/nfs-commit-300.png
However when there comes 100 dd's, you cannot wait each inode to
accumulate much more than 4MB pages to commit, because 4*100MB is
approaching the client's dirty limit. So you'll see around 4-5MB
commit sizes in this graph.
http://www.kernel.org/pub/linux/kernel/people/wfg/writeback/tests/3G/nfs-100dd-1M-8p-2952M-2.6.37-rc5+-2010-12-09-03-23/nfs-commit-300.png
Then you see the problem: how to decide one auto scaled threshold to
start commit for the current inode? It's easy for the 1-dd case.
However when there are N dd's (admittedly NFS clients rarely do large
N), we don't readily know the number N to scale down the threshold
that's suitable for 1-dd case..
So I give up the scale-to-memory commit threshold idea that could help
case (1) and just do it in a dumb but should good enough way. But I'm
open to better ideas :)
> Most of the time, we really want the server to be managing its dirty
> cache entirely independently of the client. The latter should only be
> sending the commit when it really needs to free up those pages.
Agreed. And it makes one major contrariety I'm fighting about: do large
commit size but not too much to make unacceptable fluctuations in the
data flow. It leads to the decision to include patch 20/35 into this
series. It magically reduces the frequency to ->writepages()/write_inode()
and results in semi-adaptive wrote pages in each ->writepages() (and
the later commit) to the number of concurrent dd's.
Thanks,
Fengguang
WARNING: multiple messages have this Message-ID (diff)
From: Wu Fengguang <fengguang.wu@intel.com>
To: Trond Myklebust <Trond.Myklebust@netapp.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Jan Kara <jack@suse.cz>, Christoph Hellwig <hch@lst.de>,
Dave Chinner <david@fromorbit.com>, Theodore Ts'o <tytso@mit.edu>,
Chris Mason <chris.mason@oracle.com>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Mel Gorman <mel@csn.ul.ie>, Rik van Riel <riel@redhat.com>,
KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
Greg Thelen <gthelen@google.com>,
Minchan Kim <minchan.kim@gmail.com>,
linux-mm <linux-mm@kvack.org>,
"linux-fsdevel@vger.kernel.org" <linux-fsdevel@vger.kernel.org>,
LKML <linux-kernel@vger.kernel.org>,
"Tang, Feng" <feng.tang@intel.com>
Subject: Re: [PATCH 30/35] nfs: heuristics to avoid commit
Date: Tue, 14 Dec 2010 16:20:50 +0800 [thread overview]
Message-ID: <20101214082050.GC6940@localhost> (raw)
In-Reply-To: <1292273626.8795.19.camel@heimdal.trondhjem.org>
On Tue, Dec 14, 2010 at 04:53:46AM +0800, Trond Myklebust wrote:
> On Mon, 2010-12-13 at 22:47 +0800, Wu Fengguang wrote:
> > plain text document attachment (writeback-nfs-should-commit.patch)
> > The heuristics introduced by commit 420e3646 ("NFS: Reduce the number of
> > unnecessary COMMIT calls") do not work well for large inodes being
> > actively written to.
> >
> > Refine the criterion to
> > - it has gone quiet (all data transfered to server)
> > - has accumulated >= 4MB data to commit (so it will be large IO)
> > - too few active commits (hence active IO) in the server
>
> Where does the number 4MB come from? If I'm writing a 4GB file, I
> certainly do not want to commit every 4MB; that would make for a total
> of 1000 commit requests in addition to the writes. On a 64-bit client
> +server both having loads of memory and connected by a decently a fast
> network, that can be a significant slowdown...
Sorry the description omits too much details..
Let me show you the behavior in real workload first.
http://www.kernel.org/pub/linux/kernel/people/wfg/writeback/tests/3G/nfs-1dd-1M-8p-2952M-2.6.37-rc5+-2010-12-09-03-04/writeback-inode.png
http://www.kernel.org/pub/linux/kernel/people/wfg/writeback/tests/3G/nfs-1dd-1M-8p-2952M-2.6.37-rc5+-2010-12-09-03-04/nfs-commit-300.png
On a 3GB client writing 50MB/s to the NFS server, the write chunk size
and commit size is mostly 32MB and 64MB.
The ->writepages() size and the later commit size actually scales up
to the available write bandwidth ("[PATCH 20/35] writeback: scale IO
chunk size up to device bandwidth").
So the "4MB" here is merely the minimal threshold. I chose it mainly
by the rule of thumb "it's not too bad IO size". And it's mainly used
for the cases:
1) low client=>server write bandwidth
In this case the VFS will call ->writepages() with small (but always
>= 4MB, see patch 20/35) nr_to_write , and the 4MB threshold helps
accumulate to-be-commited pages over multiple ->write_inode() calls.
As you said it will help to further scale this 4MB threshold up to the
client's memory size. But complexity arises in the next case.
2) bandwidth/memory is high, but there are lots of concurrent dd's
When doing 10 dd's with mem=3G, it still achieves 20-30MB write/commit
size:
http://www.kernel.org/pub/linux/kernel/people/wfg/writeback/tests/3G/nfs-10dd-1M-8p-2952M-2.6.37-rc5+-2010-12-09-03-13/writeback-300.png
http://www.kernel.org/pub/linux/kernel/people/wfg/writeback/tests/3G/nfs-10dd-1M-8p-2952M-2.6.37-rc5+-2010-12-09-03-13/nfs-commit-300.png
However when there comes 100 dd's, you cannot wait each inode to
accumulate much more than 4MB pages to commit, because 4*100MB is
approaching the client's dirty limit. So you'll see around 4-5MB
commit sizes in this graph.
http://www.kernel.org/pub/linux/kernel/people/wfg/writeback/tests/3G/nfs-100dd-1M-8p-2952M-2.6.37-rc5+-2010-12-09-03-23/nfs-commit-300.png
Then you see the problem: how to decide one auto scaled threshold to
start commit for the current inode? It's easy for the 1-dd case.
However when there are N dd's (admittedly NFS clients rarely do large
N), we don't readily know the number N to scale down the threshold
that's suitable for 1-dd case..
So I give up the scale-to-memory commit threshold idea that could help
case (1) and just do it in a dumb but should good enough way. But I'm
open to better ideas :)
> Most of the time, we really want the server to be managing its dirty
> cache entirely independently of the client. The latter should only be
> sending the commit when it really needs to free up those pages.
Agreed. And it makes one major contrariety I'm fighting about: do large
commit size but not too much to make unacceptable fluctuations in the
data flow. It leads to the decision to include patch 20/35 into this
series. It magically reduces the frequency to ->writepages()/write_inode()
and results in semi-adaptive wrote pages in each ->writepages() (and
the later commit) to the number of concurrent dd's.
Thanks,
Fengguang
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2010-12-14 8:20 UTC|newest]
Thread overview: 196+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-13 14:46 [PATCH 00/35] IO-less dirty throttling v4 Wu Fengguang
2010-12-13 14:46 ` Wu Fengguang
2010-12-13 14:46 ` Wu Fengguang
2010-12-13 14:46 ` [PATCH 01/35] writeback: enabling gate limit for light dirtied bdi Wu Fengguang
2010-12-13 14:46 ` Wu Fengguang
2010-12-13 14:46 ` Wu Fengguang
2011-01-12 21:43 ` Jan Kara
2011-01-12 21:43 ` Jan Kara
2011-01-13 3:44 ` Wu Fengguang
2011-01-13 3:58 ` Wu Fengguang
2011-01-13 3:58 ` Wu Fengguang
2011-01-13 19:26 ` Peter Zijlstra
2011-01-13 19:26 ` Peter Zijlstra
2011-01-14 3:21 ` Wu Fengguang
2010-12-13 14:46 ` [PATCH 02/35] writeback: safety margin for bdi stat error Wu Fengguang
2010-12-13 14:46 ` Wu Fengguang
2010-12-13 14:46 ` Wu Fengguang
2011-01-12 21:59 ` Jan Kara
2011-01-12 21:59 ` Jan Kara
2011-01-13 4:14 ` Wu Fengguang
2011-01-13 4:14 ` Wu Fengguang
2011-01-13 10:38 ` Jan Kara
2011-01-13 10:38 ` Jan Kara
2011-01-13 10:41 ` Wu Fengguang
2011-01-13 10:41 ` Wu Fengguang
2010-12-13 14:46 ` [PATCH 03/35] writeback: prevent duplicate balance_dirty_pages_ratelimited() calls Wu Fengguang
2010-12-13 14:46 ` Wu Fengguang
2010-12-13 14:46 ` Wu Fengguang
2010-12-13 14:46 ` [PATCH 04/35] writeback: reduce per-bdi dirty threshold ramp up time Wu Fengguang
2010-12-13 14:46 ` Wu Fengguang
2010-12-13 14:46 ` Wu Fengguang
2010-12-14 13:37 ` Richard Kennedy
2010-12-14 13:59 ` Wu Fengguang
2010-12-14 13:59 ` Wu Fengguang
2010-12-14 14:33 ` Wu Fengguang
2010-12-14 14:33 ` Wu Fengguang
2010-12-14 14:39 ` Wu Fengguang
2010-12-14 14:39 ` Wu Fengguang
2010-12-14 14:50 ` Peter Zijlstra
2010-12-14 14:50 ` Peter Zijlstra
2010-12-14 15:15 ` Wu Fengguang
2010-12-14 15:26 ` Wu Fengguang
2010-12-14 14:56 ` Wu Fengguang
2010-12-14 14:56 ` Wu Fengguang
2010-12-15 18:48 ` Richard Kennedy
2010-12-15 18:48 ` Richard Kennedy
2010-12-17 13:07 ` Wu Fengguang
2010-12-13 14:46 ` [PATCH 05/35] writeback: IO-less balance_dirty_pages() Wu Fengguang
2010-12-13 14:46 ` Wu Fengguang
2010-12-13 14:46 ` Wu Fengguang
2010-12-13 14:46 ` [PATCH 06/35] writeback: consolidate variable names in balance_dirty_pages() Wu Fengguang
2010-12-13 14:46 ` Wu Fengguang
2010-12-13 14:46 ` Wu Fengguang
2010-12-13 14:46 ` [PATCH 07/35] writeback: per-task rate limit on balance_dirty_pages() Wu Fengguang
2010-12-13 14:46 ` Wu Fengguang
2010-12-13 14:46 ` [PATCH 08/35] writeback: user space think time compensation Wu Fengguang
2010-12-13 14:46 ` Wu Fengguang
2010-12-13 14:46 ` Wu Fengguang
2010-12-13 14:46 ` [PATCH 09/35] writeback: account per-bdi accumulated written pages Wu Fengguang
2010-12-13 14:46 ` Wu Fengguang
2010-12-13 14:46 ` [PATCH 10/35] writeback: bdi write bandwidth estimation Wu Fengguang
2010-12-13 14:46 ` Wu Fengguang
2010-12-13 14:46 ` [PATCH 11/35] writeback: show bdi write bandwidth in debugfs Wu Fengguang
2010-12-13 14:46 ` Wu Fengguang
2010-12-13 14:46 ` Wu Fengguang
2010-12-13 14:46 ` [PATCH 12/35] writeback: scale down max throttle bandwidth on concurrent dirtiers Wu Fengguang
2010-12-13 14:46 ` Wu Fengguang
2010-12-13 14:46 ` Wu Fengguang
2010-12-14 1:21 ` Yan, Zheng
2010-12-14 1:21 ` Yan, Zheng
2010-12-14 7:00 ` Wu Fengguang
2010-12-14 7:00 ` Wu Fengguang
2010-12-14 7:00 ` Wu Fengguang
2010-12-14 13:00 ` Wu Fengguang
2010-12-14 13:00 ` Wu Fengguang
2010-12-13 14:46 ` [PATCH 13/35] writeback: bdi base throttle bandwidth Wu Fengguang
2010-12-13 14:46 ` Wu Fengguang
2010-12-13 14:46 ` Wu Fengguang
2010-12-13 14:47 ` [PATCH 14/35] writeback: smoothed bdi dirty pages Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` [PATCH 15/35] writeback: adapt max balance pause time to memory size Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` [PATCH 16/35] writeback: increase min pause time on concurrent dirtiers Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 18:23 ` Valdis.Kletnieks
2010-12-14 6:51 ` Wu Fengguang
2010-12-14 6:51 ` Wu Fengguang
2010-12-14 18:42 ` Valdis.Kletnieks
2010-12-14 18:55 ` Peter Zijlstra
2010-12-14 18:55 ` Peter Zijlstra
2010-12-14 20:13 ` Valdis.Kletnieks
2010-12-14 20:24 ` Peter Zijlstra
2010-12-14 20:24 ` Peter Zijlstra
2010-12-14 20:37 ` Valdis.Kletnieks
2010-12-13 14:47 ` [PATCH 17/35] writeback: quit throttling when bdi dirty pages dropped low Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-16 5:17 ` Wu Fengguang
2010-12-16 5:17 ` Wu Fengguang
2010-12-13 14:47 ` [PATCH 18/35] writeback: start background writeback earlier Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-16 5:37 ` Wu Fengguang
2010-12-16 5:37 ` Wu Fengguang
2010-12-13 14:47 ` [PATCH 19/35] writeback: make nr_to_write a per-file limit Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` [PATCH 20/35] writeback: scale IO chunk size up to device bandwidth Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` [PATCH 21/35] writeback: trace balance_dirty_pages() Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` [PATCH 22/35] writeback: trace global dirty page states Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-17 2:19 ` Wu Fengguang
2010-12-17 2:19 ` Wu Fengguang
2010-12-17 3:11 ` Wu Fengguang
2010-12-17 3:11 ` Wu Fengguang
2010-12-17 6:52 ` Hugh Dickins
2010-12-17 6:52 ` Hugh Dickins
2010-12-17 9:31 ` Wu Fengguang
2010-12-17 9:31 ` Wu Fengguang
2010-12-17 11:21 ` [PATCH] writeback: skip balance_dirty_pages() for in-memory fs Wu Fengguang
2010-12-17 11:21 ` Wu Fengguang
2010-12-17 14:21 ` Rik van Riel
2010-12-17 14:21 ` Rik van Riel
2010-12-17 15:34 ` Minchan Kim
2010-12-17 15:34 ` Minchan Kim
2010-12-17 15:42 ` Minchan Kim
2010-12-17 15:42 ` Minchan Kim
2010-12-21 5:59 ` Hugh Dickins
2010-12-21 5:59 ` Hugh Dickins
2010-12-21 9:39 ` Wu Fengguang
2010-12-21 9:39 ` Wu Fengguang
2010-12-30 3:15 ` Hugh Dickins
2010-12-30 3:15 ` Hugh Dickins
2010-12-13 14:47 ` [PATCH 23/35] writeback: trace writeback_single_inode() Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` [PATCH 24/35] btrfs: dont call balance_dirty_pages_ratelimited() on already dirty pages Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` [PATCH 25/35] btrfs: lower the dirty balacing rate limit Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` [PATCH 26/35] btrfs: wait on too many nr_async_bios Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` [PATCH 27/35] nfs: livelock prevention is now done in VFS Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` [PATCH 28/35] nfs: writeback pages wait queue Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` [PATCH 29/35] nfs: in-commit pages accounting and " Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 21:15 ` Trond Myklebust
2010-12-13 21:15 ` Trond Myklebust
2010-12-14 15:40 ` Wu Fengguang
2010-12-14 15:40 ` Wu Fengguang
2010-12-14 15:57 ` Trond Myklebust
2010-12-14 15:57 ` Trond Myklebust
2010-12-15 15:07 ` Wu Fengguang
2010-12-15 15:07 ` Wu Fengguang
2010-12-13 14:47 ` [PATCH 30/35] nfs: heuristics to avoid commit Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 20:53 ` Trond Myklebust
2010-12-13 20:53 ` Trond Myklebust
2010-12-14 8:20 ` Wu Fengguang [this message]
2010-12-14 8:20 ` Wu Fengguang
2010-12-13 14:47 ` [PATCH 31/35] nfs: dont change wbc->nr_to_write in write_inode() Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 21:01 ` Trond Myklebust
2010-12-13 21:01 ` Trond Myklebust
2010-12-14 15:53 ` Wu Fengguang
2010-12-14 15:53 ` Wu Fengguang
2010-12-13 14:47 ` [PATCH 32/35] nfs: limit the range of commits Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` [PATCH 33/35] nfs: adapt congestion threshold to dirty threshold Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` [PATCH 34/35] nfs: trace nfs_commit_unstable_pages() Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` [PATCH 35/35] nfs: trace nfs_commit_release() Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
2010-12-13 14:47 ` Wu Fengguang
[not found] ` <AANLkTinFeu7LMaDFgUcP3r2oqVHE5bei3T5JTPGBNvS9@mail.gmail.com>
2010-12-14 4:59 ` [PATCH 00/35] IO-less dirty throttling v4 Wu Fengguang
2010-12-14 4:59 ` Wu Fengguang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20101214082050.GC6940@localhost \
--to=fengguang.wu@intel.com \
--cc=Trond.Myklebust@netapp.com \
--cc=a.p.zijlstra@chello.nl \
--cc=akpm@linux-foundation.org \
--cc=chris.mason@oracle.com \
--cc=david@fromorbit.com \
--cc=feng.tang@intel.com \
--cc=gthelen@google.com \
--cc=hch@lst.de \
--cc=jack@suse.cz \
--cc=kosaki.motohiro@jp.fujitsu.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mel@csn.ul.ie \
--cc=minchan.kim@gmail.com \
--cc=riel@redhat.com \
--cc=tytso@mit.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.