All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michal Hocko <mhocko@kernel.org>
To: Hillf Danton <hillf.zj@alibaba-inc.com>
Cc: "'Hugh Dickins'" <hughd@google.com>,
	"'Andrew Morton'" <akpm@linux-foundation.org>,
	"'Linus Torvalds'" <torvalds@linux-foundation.org>,
	"'Johannes Weiner'" <hannes@cmpxchg.org>,
	"'Mel Gorman'" <mgorman@suse.de>,
	"'David Rientjes'" <rientjes@google.com>,
	"'Tetsuo Handa'" <penguin-kernel@i-love.sakura.ne.jp>,
	"'KAMEZAWA Hiroyuki'" <kamezawa.hiroyu@jp.fujitsu.com>,
	linux-mm@kvack.org, "'LKML'" <linux-kernel@vger.kernel.org>,
	"'Sergey Senozhatsky'" <sergey.senozhatsky.work@gmail.com>
Subject: Re: [PATCH 0/3] OOM detection rework v4
Date: Fri, 26 Feb 2016 14:49:20 +0100	[thread overview]
Message-ID: <20160226134920.GA18200@dhcp22.suse.cz> (raw)
In-Reply-To: <00bd01d17080$445ceb00$cd16c100$@alibaba-inc.com>

On Fri 26-02-16 18:27:16, Hillf Danton wrote:
> >> 
> > > --- a/mm/page_alloc.c	Thu Feb 25 15:43:18 2016
> > > +++ b/mm/page_alloc.c	Fri Feb 26 15:18:55 2016
> > > @@ -3113,6 +3113,8 @@ should_reclaim_retry(gfp_t gfp_mask, uns
> > >  	struct zone *zone;
> > >  	struct zoneref *z;
> > >
> > > +	if (order <= PAGE_ALLOC_COSTLY_ORDER)
> > > +		return true;
> > 
> > This is defeating the whole purpose of the rework - to behave
> > deterministically. You have just disabled the oom killer completely.
> > This is not the way to go
> > 
> Then in another direction, below is what I can do.
> 
> thanks
> Hillf
> --- a/mm/page_alloc.c	Thu Feb 25 15:43:18 2016
> +++ b/mm/page_alloc.c	Fri Feb 26 18:14:59 2016
> @@ -3366,8 +3366,11 @@ retry:
>  		no_progress_loops++;
>  
>  	if (should_reclaim_retry(gfp_mask, order, ac, alloc_flags,
> -				 did_some_progress > 0, no_progress_loops))
> +				 did_some_progress > 0, no_progress_loops)) {
> +		/* Burn more cycles if any zone seems to satisfy our request */
> +		no_progress_loops /= 2;

No, I do not think this makes any sense. If we need more retry loops
then we can do it by increasing MAX_RECLAIM_RETRIES.

>  		goto retry;
> +	}
>  
>  	/* Reclaim has failed us, start killing things */
>  	page = __alloc_pages_may_oom(gfp_mask, order, ac, &did_some_progress);

-- 
Michal Hocko
SUSE Labs

WARNING: multiple messages have this Message-ID (diff)
From: Michal Hocko <mhocko@kernel.org>
To: Hillf Danton <hillf.zj@alibaba-inc.com>
Cc: 'Hugh Dickins' <hughd@google.com>,
	'Andrew Morton' <akpm@linux-foundation.org>,
	'Linus Torvalds' <torvalds@linux-foundation.org>,
	'Johannes Weiner' <hannes@cmpxchg.org>,
	'Mel Gorman' <mgorman@suse.de>,
	'David Rientjes' <rientjes@google.com>,
	'Tetsuo Handa' <penguin-kernel@i-love.sakura.ne.jp>,
	'KAMEZAWA Hiroyuki' <kamezawa.hiroyu@jp.fujitsu.com>,
	linux-mm@kvack.org, 'LKML' <linux-kernel@vger.kernel.org>,
	'Sergey Senozhatsky' <sergey.senozhatsky.work@gmail.com>
Subject: Re: [PATCH 0/3] OOM detection rework v4
Date: Fri, 26 Feb 2016 14:49:20 +0100	[thread overview]
Message-ID: <20160226134920.GA18200@dhcp22.suse.cz> (raw)
In-Reply-To: <00bd01d17080$445ceb00$cd16c100$@alibaba-inc.com>

On Fri 26-02-16 18:27:16, Hillf Danton wrote:
> >> 
> > > --- a/mm/page_alloc.c	Thu Feb 25 15:43:18 2016
> > > +++ b/mm/page_alloc.c	Fri Feb 26 15:18:55 2016
> > > @@ -3113,6 +3113,8 @@ should_reclaim_retry(gfp_t gfp_mask, uns
> > >  	struct zone *zone;
> > >  	struct zoneref *z;
> > >
> > > +	if (order <= PAGE_ALLOC_COSTLY_ORDER)
> > > +		return true;
> > 
> > This is defeating the whole purpose of the rework - to behave
> > deterministically. You have just disabled the oom killer completely.
> > This is not the way to go
> > 
> Then in another direction, below is what I can do.
> 
> thanks
> Hillf
> --- a/mm/page_alloc.c	Thu Feb 25 15:43:18 2016
> +++ b/mm/page_alloc.c	Fri Feb 26 18:14:59 2016
> @@ -3366,8 +3366,11 @@ retry:
>  		no_progress_loops++;
>  
>  	if (should_reclaim_retry(gfp_mask, order, ac, alloc_flags,
> -				 did_some_progress > 0, no_progress_loops))
> +				 did_some_progress > 0, no_progress_loops)) {
> +		/* Burn more cycles if any zone seems to satisfy our request */
> +		no_progress_loops /= 2;

No, I do not think this makes any sense. If we need more retry loops
then we can do it by increasing MAX_RECLAIM_RETRIES.

>  		goto retry;
> +	}
>  
>  	/* Reclaim has failed us, start killing things */
>  	page = __alloc_pages_may_oom(gfp_mask, order, ac, &did_some_progress);

-- 
Michal Hocko
SUSE Labs

--
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/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2016-02-26 13:49 UTC|newest]

Thread overview: 299+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-15 18:19 [PATCH 0/3] OOM detection rework v4 Michal Hocko
2015-12-15 18:19 ` Michal Hocko
2015-12-15 18:19 ` [PATCH 1/3] mm, oom: rework oom detection Michal Hocko
2015-12-15 18:19   ` Michal Hocko
2016-01-14 22:58   ` David Rientjes
2016-01-14 22:58     ` David Rientjes
2016-01-16  1:07     ` Tetsuo Handa
2016-01-16  1:07       ` Tetsuo Handa
2016-01-19 22:48       ` David Rientjes
2016-01-19 22:48         ` David Rientjes
2016-01-20 11:13         ` Tetsuo Handa
2016-01-20 11:13           ` Tetsuo Handa
2016-01-20 13:13           ` Michal Hocko
2016-01-20 13:13             ` Michal Hocko
2016-04-04  8:23   ` Vladimir Davydov
2016-04-04  8:23     ` Vladimir Davydov
2016-04-04  9:42     ` Michal Hocko
2016-04-04  9:42       ` Michal Hocko
2015-12-15 18:19 ` [PATCH 2/3] mm: throttle on IO only when there are too many dirty and writeback pages Michal Hocko
2015-12-15 18:19   ` Michal Hocko
2016-03-17 11:35   ` Tetsuo Handa
2016-03-17 11:35     ` Tetsuo Handa
2016-03-17 12:01     ` Michal Hocko
2016-03-17 12:01       ` Michal Hocko
2015-12-15 18:19 ` [PATCH 3/3] mm: use watermak checks for __GFP_REPEAT high order allocations Michal Hocko
2015-12-15 18:19   ` Michal Hocko
2015-12-16 23:35 ` [PATCH 0/3] OOM detection rework v4 Andrew Morton
2015-12-16 23:35   ` Andrew Morton
2015-12-18 12:12   ` Michal Hocko
2015-12-18 12:12     ` Michal Hocko
2015-12-16 23:58 ` Andrew Morton
2015-12-16 23:58   ` Andrew Morton
2015-12-18 13:15   ` Michal Hocko
2015-12-18 13:15     ` Michal Hocko
2015-12-18 16:35     ` Johannes Weiner
2015-12-18 16:35       ` Johannes Weiner
2015-12-24 12:41 ` Tetsuo Handa
2015-12-24 12:41   ` Tetsuo Handa
2015-12-28 12:08   ` Tetsuo Handa
2015-12-28 12:08     ` Tetsuo Handa
2015-12-28 14:13     ` Tetsuo Handa
2015-12-28 14:13       ` Tetsuo Handa
2016-01-06 12:44       ` Vlastimil Babka
2016-01-06 12:44         ` Vlastimil Babka
2016-01-08 12:37       ` Michal Hocko
2016-01-08 12:37         ` Michal Hocko
2015-12-29 16:32     ` Michal Hocko
2015-12-29 16:32       ` Michal Hocko
2015-12-30 15:05       ` Tetsuo Handa
2015-12-30 15:05         ` Tetsuo Handa
2016-01-02 15:47         ` Tetsuo Handa
2016-01-02 15:47           ` Tetsuo Handa
2016-01-20 12:24           ` Michal Hocko
2016-01-20 12:24             ` Michal Hocko
2016-01-27 23:18             ` David Rientjes
2016-01-27 23:18               ` David Rientjes
2016-01-28 21:19               ` Michal Hocko
2016-01-28 21:19                 ` Michal Hocko
2015-12-29 16:27   ` Michal Hocko
2015-12-29 16:27     ` Michal Hocko
2016-01-28 20:40 ` [PATCH 4/3] mm, oom: drop the last allocation attempt before out_of_memory Michal Hocko
2016-01-28 20:40   ` Michal Hocko
2016-01-28 21:36   ` Johannes Weiner
2016-01-28 21:36     ` Johannes Weiner
2016-01-28 23:19     ` David Rientjes
2016-01-28 23:19       ` David Rientjes
2016-01-28 23:51       ` Johannes Weiner
2016-01-28 23:51         ` Johannes Weiner
2016-01-29 10:39         ` Tetsuo Handa
2016-01-29 10:39           ` Tetsuo Handa
2016-01-29 15:32         ` Michal Hocko
2016-01-29 15:32           ` Michal Hocko
2016-01-30 12:18           ` Tetsuo Handa
2016-01-30 12:18             ` Tetsuo Handa
2016-01-29 15:23       ` Michal Hocko
2016-01-29 15:23         ` Michal Hocko
2016-01-29 15:24     ` Michal Hocko
2016-01-29 15:24       ` Michal Hocko
2016-01-28 21:19 ` [PATCH 5/3] mm, vmscan: make zone_reclaimable_pages more precise Michal Hocko
2016-01-28 21:19   ` Michal Hocko
2016-01-28 23:20   ` David Rientjes
2016-01-28 23:20     ` David Rientjes
2016-01-29  3:41   ` Hillf Danton
2016-01-29  3:41     ` Hillf Danton
2016-01-29 10:35   ` Tetsuo Handa
2016-01-29 10:35     ` Tetsuo Handa
2016-01-29 15:17     ` Michal Hocko
2016-01-29 15:17       ` Michal Hocko
2016-01-29 21:30       ` Tetsuo Handa
2016-01-29 21:30         ` Tetsuo Handa
2016-02-03 13:27 ` [PATCH 0/3] OOM detection rework v4 Michal Hocko
2016-02-03 13:27   ` Michal Hocko
2016-02-03 22:58   ` David Rientjes
2016-02-03 22:58     ` David Rientjes
2016-02-04 12:57     ` Michal Hocko
2016-02-04 12:57       ` Michal Hocko
2016-02-04 13:10       ` Tetsuo Handa
2016-02-04 13:10         ` Tetsuo Handa
2016-02-04 13:39         ` Michal Hocko
2016-02-04 13:39           ` Michal Hocko
2016-02-04 14:24           ` Michal Hocko
2016-02-04 14:24             ` Michal Hocko
2016-02-07  4:09           ` Tetsuo Handa
2016-02-07  4:09             ` Tetsuo Handa
2016-02-15 20:06             ` Michal Hocko
2016-02-15 20:06               ` Michal Hocko
2016-02-16 13:10               ` Tetsuo Handa
2016-02-16 13:10                 ` Tetsuo Handa
2016-02-16 15:19                 ` Michal Hocko
2016-02-16 15:19                   ` Michal Hocko
2016-02-25  3:47   ` Hugh Dickins
2016-02-25  3:47     ` Hugh Dickins
2016-02-25  6:48     ` Sergey Senozhatsky
2016-02-25  6:48       ` Sergey Senozhatsky
2016-02-25  9:17       ` Hillf Danton
2016-02-25  9:17         ` Hillf Danton
2016-02-25  9:27         ` Michal Hocko
2016-02-25  9:27           ` Michal Hocko
2016-02-25  9:48           ` Hillf Danton
2016-02-25  9:48             ` Hillf Danton
2016-02-25 11:02             ` Sergey Senozhatsky
2016-02-25 11:02               ` Sergey Senozhatsky
2016-02-25  9:23     ` Michal Hocko
2016-02-25  9:23       ` Michal Hocko
2016-02-26  6:32       ` Hugh Dickins
2016-02-26  6:32         ` Hugh Dickins
2016-02-26  7:54         ` Hillf Danton
2016-02-26  7:54           ` Hillf Danton
2016-02-26  9:24           ` Michal Hocko
2016-02-26  9:24             ` Michal Hocko
2016-02-26 10:27             ` Hillf Danton
2016-02-26 10:27               ` Hillf Danton
2016-02-26 13:49               ` Michal Hocko [this message]
2016-02-26 13:49                 ` Michal Hocko
2016-02-26  9:33         ` Michal Hocko
2016-02-26  9:33           ` Michal Hocko
2016-02-29 21:02       ` Michal Hocko
2016-02-29 21:02         ` Michal Hocko
2016-03-02  2:19         ` Joonsoo Kim
2016-03-02  2:19           ` Joonsoo Kim
2016-03-02  9:50           ` Michal Hocko
2016-03-02  9:50             ` Michal Hocko
2016-03-02 13:32             ` Joonsoo Kim
2016-03-02 13:32               ` Joonsoo Kim
2016-03-02 14:06               ` Michal Hocko
2016-03-02 14:06                 ` Michal Hocko
2016-03-02 14:34                 ` Joonsoo Kim
2016-03-02 14:34                   ` Joonsoo Kim
2016-03-03  9:26                   ` Michal Hocko
2016-03-03  9:26                     ` Michal Hocko
2016-03-03 10:29                     ` Tetsuo Handa
2016-03-03 10:29                       ` Tetsuo Handa
2016-03-03 14:10                     ` Joonsoo Kim
2016-03-03 14:10                       ` Joonsoo Kim
2016-03-03 15:25                       ` Michal Hocko
2016-03-03 15:25                         ` Michal Hocko
2016-03-04  5:23                         ` Joonsoo Kim
2016-03-04  5:23                           ` Joonsoo Kim
2016-03-04 15:15                           ` Michal Hocko
2016-03-04 15:15                             ` Michal Hocko
2016-03-04 17:39                             ` Michal Hocko
2016-03-04 17:39                               ` Michal Hocko
2016-03-07  5:23                             ` Joonsoo Kim
2016-03-07  5:23                               ` Joonsoo Kim
2016-03-03 15:50                       ` Vlastimil Babka
2016-03-03 15:50                         ` Vlastimil Babka
2016-03-03 16:26                         ` Michal Hocko
2016-03-03 16:26                           ` Michal Hocko
2016-03-04  7:10                         ` Joonsoo Kim
2016-03-04  7:10                           ` Joonsoo Kim
2016-03-02 15:01             ` Minchan Kim
2016-03-02 15:01               ` Minchan Kim
2016-03-07 16:08         ` [PATCH] mm, oom: protect !costly allocations some more (was: Re: [PATCH 0/3] OOM detection rework v4) Michal Hocko
2016-03-07 16:08           ` Michal Hocko
2016-03-08  3:51           ` Sergey Senozhatsky
2016-03-08  3:51             ` Sergey Senozhatsky
2016-03-08  9:08             ` Michal Hocko
2016-03-08  9:08               ` Michal Hocko
2016-03-08  9:24               ` Sergey Senozhatsky
2016-03-08  9:24                 ` Sergey Senozhatsky
2016-03-08  9:24           ` [PATCH] mm, oom: protect !costly allocations some more Vlastimil Babka
2016-03-08  9:24             ` Vlastimil Babka
2016-03-08  9:32             ` Sergey Senozhatsky
2016-03-08  9:32               ` Sergey Senozhatsky
2016-03-08  9:46             ` Michal Hocko
2016-03-08  9:46               ` Michal Hocko
2016-03-08  9:52               ` Vlastimil Babka
2016-03-08  9:52                 ` Vlastimil Babka
2016-03-08 10:10                 ` Michal Hocko
2016-03-08 10:10                   ` Michal Hocko
2016-03-08 11:12                   ` Vlastimil Babka
2016-03-08 11:12                     ` Vlastimil Babka
2016-03-08 12:22                     ` Michal Hocko
2016-03-08 12:22                       ` Michal Hocko
2016-03-08 12:29                       ` Vlastimil Babka
2016-03-08 12:29                         ` Vlastimil Babka
2016-03-08  9:58           ` [PATCH] mm, oom: protect !costly allocations some more (was: Re: [PATCH 0/3] OOM detection rework v4) Sergey Senozhatsky
2016-03-08  9:58             ` Sergey Senozhatsky
2016-03-08 13:57             ` Michal Hocko
2016-03-08 13:57               ` Michal Hocko
2016-03-08 10:36           ` Hugh Dickins
2016-03-08 13:42           ` [PATCH 0/2] oom rework: high order enahncements Michal Hocko
2016-03-08 13:42             ` Michal Hocko
2016-03-08 13:42             ` [PATCH 1/3] mm, compaction: change COMPACT_ constants into enum Michal Hocko
2016-03-08 13:42               ` Michal Hocko
2016-03-08 14:19               ` Vlastimil Babka
2016-03-08 14:19                 ` Vlastimil Babka
2016-03-09  3:55               ` Hillf Danton
2016-03-09  3:55                 ` Hillf Danton
2016-03-08 13:42             ` [PATCH 2/3] mm, compaction: cover all compaction mode in compact_zone Michal Hocko
2016-03-08 13:42               ` Michal Hocko
2016-03-08 14:22               ` Vlastimil Babka
2016-03-08 14:22                 ` Vlastimil Babka
2016-03-09  3:57               ` Hillf Danton
2016-03-09  3:57                 ` Hillf Danton
2016-03-08 13:42             ` [PATCH 3/3] mm, oom: protect !costly allocations some more Michal Hocko
2016-03-08 13:42               ` Michal Hocko
2016-03-08 14:34               ` Vlastimil Babka
2016-03-08 14:34                 ` Vlastimil Babka
2016-03-08 14:48                 ` Michal Hocko
2016-03-08 14:48                   ` Michal Hocko
2016-03-08 15:03                   ` Vlastimil Babka
2016-03-08 15:03                     ` Vlastimil Babka
2016-03-09 11:11               ` Michal Hocko
2016-03-09 11:11                 ` Michal Hocko
2016-03-09 14:07                 ` Vlastimil Babka
2016-03-09 14:07                   ` Vlastimil Babka
2016-03-11 12:17                 ` Hugh Dickins
2016-03-11 12:17                   ` Hugh Dickins
2016-03-11 13:06                   ` Michal Hocko
2016-03-11 13:06                     ` Michal Hocko
2016-03-11 19:08                     ` Hugh Dickins
2016-03-11 19:08                       ` Hugh Dickins
2016-03-14 16:21                       ` Michal Hocko
2016-03-14 16:21                         ` Michal Hocko
2016-03-08 15:19           ` [PATCH] mm, oom: protect !costly allocations some more (was: Re: [PATCH 0/3] OOM detection rework v4) Joonsoo Kim
2016-03-08 15:19             ` Joonsoo Kim
2016-03-08 16:05             ` Michal Hocko
2016-03-08 16:05               ` Michal Hocko
2016-03-08 17:03               ` Joonsoo Kim
2016-03-08 17:03                 ` Joonsoo Kim
2016-03-09 10:41                 ` Michal Hocko
2016-03-09 10:41                   ` Michal Hocko
2016-03-11 14:53                   ` Joonsoo Kim
2016-03-11 14:53                     ` Joonsoo Kim
2016-03-11 15:20                     ` Michal Hocko
2016-03-11 15:20                       ` Michal Hocko
2016-02-29 20:35     ` [PATCH 0/3] OOM detection rework v4 Michal Hocko
2016-03-01  7:29       ` Hugh Dickins
2016-03-01  7:29         ` Hugh Dickins
2016-03-01 13:38         ` Michal Hocko
2016-03-01 13:38           ` Michal Hocko
2016-03-01 14:40           ` Michal Hocko
2016-03-01 14:40             ` Michal Hocko
2016-03-01 18:14           ` Vlastimil Babka
2016-03-01 18:14             ` Vlastimil Babka
2016-03-02  2:55             ` Joonsoo Kim
2016-03-02  2:55               ` Joonsoo Kim
2016-03-02 12:37               ` Michal Hocko
2016-03-02 12:37                 ` Michal Hocko
2016-03-02 14:06                 ` Joonsoo Kim
2016-03-02 14:06                   ` Joonsoo Kim
2016-03-02 12:24             ` Michal Hocko
2016-03-02 13:00               ` Michal Hocko
2016-03-02 13:22               ` Vlastimil Babka
2016-03-02 13:22                 ` Vlastimil Babka
2016-03-02  2:28           ` Joonsoo Kim
2016-03-02  2:28             ` Joonsoo Kim
2016-03-02 12:39             ` Michal Hocko
2016-03-02 12:39               ` Michal Hocko
2016-03-03  9:54           ` Hugh Dickins
2016-03-03 12:32             ` Michal Hocko
2016-03-03 12:32               ` Michal Hocko
2016-03-03 20:57               ` Hugh Dickins
2016-03-03 20:57                 ` Hugh Dickins
2016-03-04  7:41                 ` Vlastimil Babka
2016-03-04  7:41                   ` Vlastimil Babka
2016-03-04  7:53             ` Joonsoo Kim
2016-03-04  7:53               ` Joonsoo Kim
2016-03-04 12:28             ` Michal Hocko
2016-03-04 12:28               ` Michal Hocko
2016-03-11 10:45 ` Tetsuo Handa
2016-03-11 10:45   ` Tetsuo Handa
2016-03-11 13:08   ` Michal Hocko
2016-03-11 13:08     ` Michal Hocko
2016-03-11 13:32     ` Tetsuo Handa
2016-03-11 13:32       ` Tetsuo Handa
2016-03-11 15:28       ` Michal Hocko
2016-03-11 15:28         ` Michal Hocko
2016-03-11 16:49         ` Tetsuo Handa
2016-03-11 16:49           ` Tetsuo Handa
2016-03-11 17:00           ` Michal Hocko
2016-03-11 17:00             ` Michal Hocko
2016-03-11 17:20             ` Tetsuo Handa
2016-03-11 17:20               ` Tetsuo Handa
2016-03-12  4:08               ` Tetsuo Handa
2016-03-12  4:08                 ` Tetsuo Handa
2016-03-13 14:41                 ` Tetsuo Handa
2016-03-13 14:41                   ` Tetsuo Handa

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=20160226134920.GA18200@dhcp22.suse.cz \
    --to=mhocko@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=hannes@cmpxchg.org \
    --cc=hillf.zj@alibaba-inc.com \
    --cc=hughd@google.com \
    --cc=kamezawa.hiroyu@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mgorman@suse.de \
    --cc=penguin-kernel@i-love.sakura.ne.jp \
    --cc=rientjes@google.com \
    --cc=sergey.senozhatsky.work@gmail.com \
    --cc=torvalds@linux-foundation.org \
    /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.