All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michal Hocko <mhocko@kernel.org>
To: Vlastimil Babka <vbabka@suse.cz>
Cc: linux-mm@kvack.org, linux-fsdevel@vger.kernel.org,
	Andrew Morton <akpm@linux-foundation.org>,
	Dave Chinner <david@fromorbit.com>,
	djwong@kernel.org, "Theodore Ts'o" <tytso@mit.edu>,
	Chris Mason <clm@fb.com>, David Sterba <dsterba@suse.cz>,
	Jan Kara <jack@suse.cz>,
	ceph-devel@vger.kernel.org, cluster-devel@redhat.com,
	linux-nfs@vger.kernel.org, logfs@logfs.org,
	linux-xfs@vger.kernel.org, linux-ext4@vger.kernel.org,
	linux-btrfs@vger.kernel.org, linux-mtd@lists.infradead.org,
	reiserfs-devel@vger.kernel.org,
	linux-ntfs-dev@lists.sourceforge.net,
	linux-f2fs-devel@lists.sourceforge.net,
	linux-afs@lists.infradead.org,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 3/8] mm: introduce memalloc_nofs_{save,restore} API
Date: Mon, 9 Jan 2017 14:42:10 +0100	[thread overview]
Message-ID: <20170109134210.GI7495@dhcp22.suse.cz> (raw)
In-Reply-To: <86dbce74-a532-2f98-6a63-4dbad77b2aa1@suse.cz>

On Mon 09-01-17 14:04:21, Vlastimil Babka wrote:
[...]
> > +static inline unsigned int memalloc_nofs_save(void)
> > +{
> > +	unsigned int flags = current->flags & PF_MEMALLOC_NOFS;
> > +	current->flags |= PF_MEMALLOC_NOFS;
> 
> So this is not new, as same goes for memalloc_noio_save, but I've
> noticed that e.g. exit_signal() does tsk->flags |= PF_EXITING;
> So is it possible that there's a r-m-w hazard here?

exit_signals operates on current and all task_struct::flags should be
used only on the current.
[...]

> > @@ -3029,7 +3029,7 @@ unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *memcg,
> >  	int nid;
> >  	struct scan_control sc = {
> >  		.nr_to_reclaim = max(nr_pages, SWAP_CLUSTER_MAX),
> > -		.gfp_mask = (gfp_mask & GFP_RECLAIM_MASK) |
> > +		.gfp_mask = (current_gfp_context(gfp_mask) & GFP_RECLAIM_MASK) |
> 
> So this function didn't do memalloc_noio_flags() before? Is it a bug
> that should be fixed separately or at least mentioned? Because that
> looks like a functional change...

We didn't need it. Kmem charges are opt-in and current all of them
support GFP_IO. The LRU pages are not charged in NOIO context either.
We need it now because there will be callers to charge GFP_KERNEL while
being inside the NOFS scope.

Now that you have opened this I have noticed that the code is wrong
here because GFP_HIGHUSER_MOVABLE & ~GFP_RECLAIM_MASK would overwrite
the removed GFP_FS. I guess it would be better and less error prone
to move the current_gfp_context part into the direct reclaim entry -
do_try_to_free_pages - and put the comment like this
---
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 4ea6b610f20e..df7975185f11 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -2756,6 +2756,13 @@ static unsigned long do_try_to_free_pages(struct zonelist *zonelist,
 	int initial_priority = sc->priority;
 	unsigned long total_scanned = 0;
 	unsigned long writeback_threshold;
+
+	/*
+	 * Make sure that the gfp context properly handles scope gfp mask.
+	 * This might weaken the reclaim context (e.g. make it GFP_NOFS or
+	 * GFP_NOIO).
+	 */
+	sc->gfp_mask = current_gfp_context(sc->gfp_mask);
 retry:
 	delayacct_freepages_start();
 
@@ -2949,7 +2956,7 @@ unsigned long try_to_free_pages(struct zonelist *zonelist, int order,
 	unsigned long nr_reclaimed;
 	struct scan_control sc = {
 		.nr_to_reclaim = SWAP_CLUSTER_MAX,
-		.gfp_mask = (gfp_mask = current_gfp_context(gfp_mask)),
+		.gfp_mask = gfp_mask,
 		.reclaim_idx = gfp_zone(gfp_mask),
 		.order = order,
 		.nodemask = nodemask,
@@ -3029,8 +3036,7 @@ unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *memcg,
 	int nid;
 	struct scan_control sc = {
 		.nr_to_reclaim = max(nr_pages, SWAP_CLUSTER_MAX),
-		.gfp_mask = (current_gfp_context(gfp_mask) & GFP_RECLAIM_MASK) |
-				(GFP_HIGHUSER_MOVABLE & ~GFP_RECLAIM_MASK),
+		.gfp_mask = GFP_HIGHUSER_MOVABLE & ~GFP_RECLAIM_MASK,
 		.reclaim_idx = MAX_NR_ZONES - 1,
 		.target_mem_cgroup = memcg,
 		.priority = DEF_PRIORITY,
@@ -3723,7 +3729,7 @@ static int __node_reclaim(struct pglist_data *pgdat, gfp_t gfp_mask, unsigned in
 	int classzone_idx = gfp_zone(gfp_mask);
 	struct scan_control sc = {
 		.nr_to_reclaim = max(nr_pages, SWAP_CLUSTER_MAX),
-		.gfp_mask = (gfp_mask = current_gfp_context(gfp_mask)),
+		.gfp_mask = gfp_mask,
 		.order = order,
 		.priority = NODE_RECLAIM_PRIORITY,
 		.may_writepage = !!(node_reclaim_mode & RECLAIM_WRITE),
-- 
Michal Hocko
SUSE Labs

WARNING: multiple messages have this Message-ID (diff)
From: Michal Hocko <mhocko@kernel.org>
To: Vlastimil Babka <vbabka@suse.cz>
Cc: linux-mm@kvack.org, linux-fsdevel@vger.kernel.org,
	Andrew Morton <akpm@linux-foundation.org>,
	Dave Chinner <david@fromorbit.com>,
	djwong@kernel.org, Theodore Ts'o <tytso@mit.edu>,
	Chris Mason <clm@fb.com>, David Sterba <dsterba@suse.cz>,
	Jan Kara <jack@suse.cz>,
	ceph-devel@vger.kernel.org, cluster-devel@redhat.com,
	linux-nfs@vger.kernel.org, logfs@logfs.org,
	linux-xfs@vger.kernel.org, linux-ext4@vger.kernel.org,
	linux-btrfs@vger.kernel.org, linux-mtd@lists.infradead.org,
	reiserfs-devel@vger.kernel.org,
	linux-ntfs-dev@lists.sourceforge.net,
	linux-f2fs-devel@lists.sourceforge.net,
	linux-afs@lists.infradead.org,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 3/8] mm: introduce memalloc_nofs_{save,restore} API
Date: Mon, 9 Jan 2017 14:42:10 +0100	[thread overview]
Message-ID: <20170109134210.GI7495@dhcp22.suse.cz> (raw)
In-Reply-To: <86dbce74-a532-2f98-6a63-4dbad77b2aa1@suse.cz>

On Mon 09-01-17 14:04:21, Vlastimil Babka wrote:
[...]
> > +static inline unsigned int memalloc_nofs_save(void)
> > +{
> > +	unsigned int flags = current->flags & PF_MEMALLOC_NOFS;
> > +	current->flags |= PF_MEMALLOC_NOFS;
> 
> So this is not new, as same goes for memalloc_noio_save, but I've
> noticed that e.g. exit_signal() does tsk->flags |= PF_EXITING;
> So is it possible that there's a r-m-w hazard here?

exit_signals operates on current and all task_struct::flags should be
used only on the current.
[...]

> > @@ -3029,7 +3029,7 @@ unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *memcg,
> >  	int nid;
> >  	struct scan_control sc = {
> >  		.nr_to_reclaim = max(nr_pages, SWAP_CLUSTER_MAX),
> > -		.gfp_mask = (gfp_mask & GFP_RECLAIM_MASK) |
> > +		.gfp_mask = (current_gfp_context(gfp_mask) & GFP_RECLAIM_MASK) |
> 
> So this function didn't do memalloc_noio_flags() before? Is it a bug
> that should be fixed separately or at least mentioned? Because that
> looks like a functional change...

We didn't need it. Kmem charges are opt-in and current all of them
support GFP_IO. The LRU pages are not charged in NOIO context either.
We need it now because there will be callers to charge GFP_KERNEL while
being inside the NOFS scope.

Now that you have opened this I have noticed that the code is wrong
here because GFP_HIGHUSER_MOVABLE & ~GFP_RECLAIM_MASK would overwrite
the removed GFP_FS. I guess it would be better and less error prone
to move the current_gfp_context part into the direct reclaim entry -
do_try_to_free_pages - and put the comment like this
---
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 4ea6b610f20e..df7975185f11 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -2756,6 +2756,13 @@ static unsigned long do_try_to_free_pages(struct zonelist *zonelist,
 	int initial_priority = sc->priority;
 	unsigned long total_scanned = 0;
 	unsigned long writeback_threshold;
+
+	/*
+	 * Make sure that the gfp context properly handles scope gfp mask.
+	 * This might weaken the reclaim context (e.g. make it GFP_NOFS or
+	 * GFP_NOIO).
+	 */
+	sc->gfp_mask = current_gfp_context(sc->gfp_mask);
 retry:
 	delayacct_freepages_start();
 
@@ -2949,7 +2956,7 @@ unsigned long try_to_free_pages(struct zonelist *zonelist, int order,
 	unsigned long nr_reclaimed;
 	struct scan_control sc = {
 		.nr_to_reclaim = SWAP_CLUSTER_MAX,
-		.gfp_mask = (gfp_mask = current_gfp_context(gfp_mask)),
+		.gfp_mask = gfp_mask,
 		.reclaim_idx = gfp_zone(gfp_mask),
 		.order = order,
 		.nodemask = nodemask,
@@ -3029,8 +3036,7 @@ unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *memcg,
 	int nid;
 	struct scan_control sc = {
 		.nr_to_reclaim = max(nr_pages, SWAP_CLUSTER_MAX),
-		.gfp_mask = (current_gfp_context(gfp_mask) & GFP_RECLAIM_MASK) |
-				(GFP_HIGHUSER_MOVABLE & ~GFP_RECLAIM_MASK),
+		.gfp_mask = GFP_HIGHUSER_MOVABLE & ~GFP_RECLAIM_MASK,
 		.reclaim_idx = MAX_NR_ZONES - 1,
 		.target_mem_cgroup = memcg,
 		.priority = DEF_PRIORITY,
@@ -3723,7 +3729,7 @@ static int __node_reclaim(struct pglist_data *pgdat, gfp_t gfp_mask, unsigned in
 	int classzone_idx = gfp_zone(gfp_mask);
 	struct scan_control sc = {
 		.nr_to_reclaim = max(nr_pages, SWAP_CLUSTER_MAX),
-		.gfp_mask = (gfp_mask = current_gfp_context(gfp_mask)),
+		.gfp_mask = gfp_mask,
 		.order = order,
 		.priority = NODE_RECLAIM_PRIORITY,
 		.may_writepage = !!(node_reclaim_mode & RECLAIM_WRITE),
-- 
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>

WARNING: multiple messages have this Message-ID (diff)
From: Michal Hocko <mhocko@kernel.org>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [PATCH 3/8] mm: introduce memalloc_nofs_{save, restore} API
Date: Mon, 9 Jan 2017 14:42:10 +0100	[thread overview]
Message-ID: <20170109134210.GI7495@dhcp22.suse.cz> (raw)
In-Reply-To: <86dbce74-a532-2f98-6a63-4dbad77b2aa1@suse.cz>

On Mon 09-01-17 14:04:21, Vlastimil Babka wrote:
[...]
> > +static inline unsigned int memalloc_nofs_save(void)
> > +{
> > +	unsigned int flags = current->flags & PF_MEMALLOC_NOFS;
> > +	current->flags |= PF_MEMALLOC_NOFS;
> 
> So this is not new, as same goes for memalloc_noio_save, but I've
> noticed that e.g. exit_signal() does tsk->flags |= PF_EXITING;
> So is it possible that there's a r-m-w hazard here?

exit_signals operates on current and all task_struct::flags should be
used only on the current.
[...]

> > @@ -3029,7 +3029,7 @@ unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *memcg,
> >  	int nid;
> >  	struct scan_control sc = {
> >  		.nr_to_reclaim = max(nr_pages, SWAP_CLUSTER_MAX),
> > -		.gfp_mask = (gfp_mask & GFP_RECLAIM_MASK) |
> > +		.gfp_mask = (current_gfp_context(gfp_mask) & GFP_RECLAIM_MASK) |
> 
> So this function didn't do memalloc_noio_flags() before? Is it a bug
> that should be fixed separately or at least mentioned? Because that
> looks like a functional change...

We didn't need it. Kmem charges are opt-in and current all of them
support GFP_IO. The LRU pages are not charged in NOIO context either.
We need it now because there will be callers to charge GFP_KERNEL while
being inside the NOFS scope.

Now that you have opened this I have noticed that the code is wrong
here because GFP_HIGHUSER_MOVABLE & ~GFP_RECLAIM_MASK would overwrite
the removed GFP_FS. I guess it would be better and less error prone
to move the current_gfp_context part into the direct reclaim entry -
do_try_to_free_pages - and put the comment like this
---
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 4ea6b610f20e..df7975185f11 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -2756,6 +2756,13 @@ static unsigned long do_try_to_free_pages(struct zonelist *zonelist,
 	int initial_priority = sc->priority;
 	unsigned long total_scanned = 0;
 	unsigned long writeback_threshold;
+
+	/*
+	 * Make sure that the gfp context properly handles scope gfp mask.
+	 * This might weaken the reclaim context (e.g. make it GFP_NOFS or
+	 * GFP_NOIO).
+	 */
+	sc->gfp_mask = current_gfp_context(sc->gfp_mask);
 retry:
 	delayacct_freepages_start();
 
@@ -2949,7 +2956,7 @@ unsigned long try_to_free_pages(struct zonelist *zonelist, int order,
 	unsigned long nr_reclaimed;
 	struct scan_control sc = {
 		.nr_to_reclaim = SWAP_CLUSTER_MAX,
-		.gfp_mask = (gfp_mask = current_gfp_context(gfp_mask)),
+		.gfp_mask = gfp_mask,
 		.reclaim_idx = gfp_zone(gfp_mask),
 		.order = order,
 		.nodemask = nodemask,
@@ -3029,8 +3036,7 @@ unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *memcg,
 	int nid;
 	struct scan_control sc = {
 		.nr_to_reclaim = max(nr_pages, SWAP_CLUSTER_MAX),
-		.gfp_mask = (current_gfp_context(gfp_mask) & GFP_RECLAIM_MASK) |
-				(GFP_HIGHUSER_MOVABLE & ~GFP_RECLAIM_MASK),
+		.gfp_mask = GFP_HIGHUSER_MOVABLE & ~GFP_RECLAIM_MASK,
 		.reclaim_idx = MAX_NR_ZONES - 1,
 		.target_mem_cgroup = memcg,
 		.priority = DEF_PRIORITY,
@@ -3723,7 +3729,7 @@ static int __node_reclaim(struct pglist_data *pgdat, gfp_t gfp_mask, unsigned in
 	int classzone_idx = gfp_zone(gfp_mask);
 	struct scan_control sc = {
 		.nr_to_reclaim = max(nr_pages, SWAP_CLUSTER_MAX),
-		.gfp_mask = (gfp_mask = current_gfp_context(gfp_mask)),
+		.gfp_mask = gfp_mask,
 		.order = order,
 		.priority = NODE_RECLAIM_PRIORITY,
 		.may_writepage = !!(node_reclaim_mode & RECLAIM_WRITE),
-- 
Michal Hocko
SUSE Labs



  reply	other threads:[~2017-01-09 13:42 UTC|newest]

Thread overview: 167+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-06 14:10 [PATCH 0/8 v3] scope GFP_NOFS api Michal Hocko
2017-01-06 14:10 ` [Cluster-devel] " Michal Hocko
2017-01-06 14:10 ` Michal Hocko
2017-01-06 14:10 ` Michal Hocko
2017-01-06 14:10 ` Michal Hocko
2017-01-06 14:11 ` [PATCH 1/8] lockdep: allow to disable reclaim lockup detection Michal Hocko
2017-01-06 14:11   ` [Cluster-devel] " Michal Hocko
2017-01-06 14:11   ` Michal Hocko
2017-01-06 14:11   ` Michal Hocko
2017-01-06 14:11   ` Michal Hocko
2017-01-09 12:56   ` Vlastimil Babka
2017-01-09 12:56     ` [Cluster-devel] " Vlastimil Babka
2017-01-09 12:56     ` Vlastimil Babka
2017-01-06 14:11 ` [PATCH 2/8] xfs: abstract PF_FSTRANS to PF_MEMALLOC_NOFS Michal Hocko
2017-01-06 14:11   ` [Cluster-devel] " Michal Hocko
2017-01-06 14:11   ` Michal Hocko
2017-01-06 14:11   ` Michal Hocko
2017-01-06 14:11   ` Michal Hocko
2017-01-09 12:59   ` Vlastimil Babka
2017-01-09 12:59     ` [Cluster-devel] " Vlastimil Babka
2017-01-09 12:59     ` Vlastimil Babka
2017-01-09 14:29     ` Michal Hocko
2017-01-09 14:29       ` [Cluster-devel] " Michal Hocko
2017-01-09 14:29       ` Michal Hocko
2017-01-09 20:58   ` Darrick J. Wong
2017-01-09 20:58     ` [Cluster-devel] " Darrick J. Wong
2017-01-09 20:58     ` Darrick J. Wong
2017-01-06 14:11 ` [PATCH 3/8] mm: introduce memalloc_nofs_{save,restore} API Michal Hocko
2017-01-06 14:11   ` [Cluster-devel] [PATCH 3/8] mm: introduce memalloc_nofs_{save, restore} API Michal Hocko
2017-01-06 14:11   ` [PATCH 3/8] mm: introduce memalloc_nofs_{save,restore} API Michal Hocko
2017-01-06 14:11   ` Michal Hocko
2017-01-06 14:11   ` Michal Hocko
2017-01-09 13:04   ` Vlastimil Babka
2017-01-09 13:04     ` [Cluster-devel] [PATCH 3/8] mm: introduce memalloc_nofs_{save, restore} API Vlastimil Babka
2017-01-09 13:04     ` [PATCH 3/8] mm: introduce memalloc_nofs_{save,restore} API Vlastimil Babka
2017-01-09 13:42     ` Michal Hocko [this message]
2017-01-09 13:42       ` [Cluster-devel] [PATCH 3/8] mm: introduce memalloc_nofs_{save, restore} API Michal Hocko
2017-01-09 13:42       ` [PATCH 3/8] mm: introduce memalloc_nofs_{save,restore} API Michal Hocko
2017-01-09 13:59       ` Michal Hocko
2017-01-09 13:59         ` [Cluster-devel] [PATCH 3/8] mm: introduce memalloc_nofs_{save, restore} API Michal Hocko
2017-01-09 13:59         ` [PATCH 3/8] mm: introduce memalloc_nofs_{save,restore} API Michal Hocko
2017-01-09 14:04       ` Vlastimil Babka
2017-01-09 14:04         ` [Cluster-devel] [PATCH 3/8] mm: introduce memalloc_nofs_{save, restore} API Vlastimil Babka
2017-01-09 14:04         ` [PATCH 3/8] mm: introduce memalloc_nofs_{save,restore} API Vlastimil Babka
2017-01-06 14:11 ` [PATCH 4/8] xfs: use memalloc_nofs_{save,restore} instead of memalloc_noio* Michal Hocko
2017-01-06 14:11   ` [Cluster-devel] [PATCH 4/8] xfs: use memalloc_nofs_{save, restore} " Michal Hocko
2017-01-06 14:11   ` Michal Hocko
2017-01-06 14:11   ` [PATCH 4/8] xfs: use memalloc_nofs_{save,restore} " Michal Hocko
2017-01-06 14:11   ` Michal Hocko
2017-01-06 14:11   ` Michal Hocko
2017-01-09 14:08   ` Vlastimil Babka
2017-01-09 14:08     ` [Cluster-devel] [PATCH 4/8] xfs: use memalloc_nofs_{save, restore} " Vlastimil Babka
2017-01-09 14:08     ` [PATCH 4/8] xfs: use memalloc_nofs_{save,restore} " Vlastimil Babka
2017-01-09 14:25     ` Michal Hocko
2017-01-09 14:25       ` [Cluster-devel] [PATCH 4/8] xfs: use memalloc_nofs_{save, restore} " Michal Hocko
2017-01-09 14:25       ` [PATCH 4/8] xfs: use memalloc_nofs_{save,restore} " Michal Hocko
2017-01-09 15:56   ` Brian Foster
2017-01-09 15:56     ` [Cluster-devel] [PATCH 4/8] xfs: use memalloc_nofs_{save, restore} " Brian Foster
2017-01-09 15:56     ` [PATCH 4/8] xfs: use memalloc_nofs_{save,restore} " Brian Foster
2017-01-09 20:59   ` Darrick J. Wong
2017-01-09 20:59     ` [Cluster-devel] [PATCH 4/8] xfs: use memalloc_nofs_{save, restore} " Darrick J. Wong
2017-01-09 20:59     ` [PATCH 4/8] xfs: use memalloc_nofs_{save,restore} " Darrick J. Wong
2017-01-06 14:11 ` [PATCH 5/8] jbd2: mark the transaction context with the scope GFP_NOFS context Michal Hocko
2017-01-06 14:11   ` [Cluster-devel] " Michal Hocko
2017-01-06 14:11   ` Michal Hocko
2017-01-06 14:11   ` Michal Hocko
2017-01-06 14:11   ` Michal Hocko
2017-01-06 14:11 ` [PATCH 6/8] jbd2: make the whole kjournald2 kthread NOFS safe Michal Hocko
2017-01-06 14:11   ` [Cluster-devel] " Michal Hocko
2017-01-06 14:11   ` Michal Hocko
2017-01-06 14:11   ` Michal Hocko
2017-01-06 14:11   ` Michal Hocko
2017-01-06 14:11 ` [PATCH 7/8] Revert "ext4: avoid deadlocks in the writeback path by using sb_getblk_gfp" Michal Hocko
2017-01-06 14:11   ` [Cluster-devel] " Michal Hocko
2017-01-06 14:11   ` Michal Hocko
2017-01-06 14:11   ` Michal Hocko
2017-01-06 14:11   ` Michal Hocko
2017-01-17  3:01   ` Theodore Ts'o
2017-01-17  3:01     ` [Cluster-devel] " Theodore Ts'o
2017-01-17  3:01     ` Theodore Ts'o
2017-01-17  7:54     ` Michal Hocko
2017-01-17  7:54       ` [Cluster-devel] " Michal Hocko
2017-01-17  7:54       ` Michal Hocko
2017-03-06 11:59       ` Michal Hocko
2017-03-06 11:59         ` [Cluster-devel] " Michal Hocko
2017-03-06 11:59         ` Michal Hocko
2017-01-06 14:11 ` [PATCH 8/8] Revert "ext4: fix wrong gfp type under transaction" Michal Hocko
2017-01-06 14:11   ` [Cluster-devel] " Michal Hocko
2017-01-06 14:11   ` Michal Hocko
2017-01-06 14:11   ` Michal Hocko
2017-01-06 14:11   ` Michal Hocko
2017-01-17  2:56   ` Theodore Ts'o
2017-01-17  2:56     ` [Cluster-devel] " Theodore Ts'o
2017-01-17  2:56     ` Theodore Ts'o
2017-01-17  8:24     ` Michal Hocko
2017-01-17  8:24       ` [Cluster-devel] " Michal Hocko
2017-01-17  8:24       ` Michal Hocko
2017-01-17 15:18       ` Michal Hocko
2017-01-17 15:18         ` [Cluster-devel] " Michal Hocko
2017-01-17 15:18         ` Michal Hocko
2017-01-17 15:18         ` Michal Hocko
2017-01-17 15:59         ` Theodore Ts'o
2017-01-17 15:59           ` [Cluster-devel] " Theodore Ts'o
2017-01-17 15:59           ` Theodore Ts'o
2017-01-17 16:16           ` Michal Hocko
2017-01-17 16:16             ` [Cluster-devel] " Michal Hocko
2017-01-17 16:16             ` Michal Hocko
2017-01-17 17:29             ` Jan Kara
2017-01-17 17:29               ` [Cluster-devel] " Jan Kara
2017-01-17 17:29               ` Jan Kara
2017-01-19  8:39               ` Michal Hocko
2017-01-19  8:39                 ` [Cluster-devel] " Michal Hocko
2017-01-19  8:39                 ` Michal Hocko
2017-01-19  9:22                 ` Jan Kara
2017-01-19  9:22                   ` [Cluster-devel] " Jan Kara
2017-01-19  9:22                   ` Jan Kara
2017-01-19  9:44                   ` Michal Hocko
2017-01-19  9:44                     ` [Cluster-devel] " Michal Hocko
2017-01-19  9:44                     ` Michal Hocko
2017-01-26  7:44                     ` Michal Hocko
2017-01-26  7:44                       ` [Cluster-devel] " Michal Hocko
2017-01-26  7:44                       ` Michal Hocko
2017-01-27  6:13                       ` Theodore Ts'o
2017-01-27  6:13                         ` [Cluster-devel] " Theodore Ts'o
2017-01-27  6:13                         ` Theodore Ts'o
2017-01-27  6:13                         ` Theodore Ts'o
2017-01-27  9:37                         ` Michal Hocko
2017-01-27  9:37                           ` [Cluster-devel] " Michal Hocko
2017-01-27  9:37                           ` Michal Hocko
2017-01-27 16:40                           ` Theodore Ts'o
2017-01-27 16:40                             ` [Cluster-devel] " Theodore Ts'o
2017-01-27 16:40                             ` Theodore Ts'o
2017-01-28  7:32                             ` [Cluster-devel] " Christoph Hellwig
2017-01-28  7:32                               ` Christoph Hellwig
2017-01-28  7:32                               ` Christoph Hellwig
2017-01-28  8:17                               ` David Lang
2017-01-28  8:17                                 ` David Lang
2017-01-28  8:17                                 ` David Lang
2017-01-30  8:12                             ` Michal Hocko
2017-01-30  8:12                               ` [Cluster-devel] " Michal Hocko
2017-01-30  8:12                               ` Michal Hocko
2017-02-03 15:32                               ` Michal Hocko
2017-02-03 15:32                                 ` [Cluster-devel] " Michal Hocko
2017-02-03 15:32                                 ` Michal Hocko
2017-01-17 21:04           ` Andreas Dilger
2017-01-17 21:04             ` [Cluster-devel] " Andreas Dilger
2017-01-17 21:04             ` Andreas Dilger
2017-01-18  8:29             ` Michal Hocko
2017-01-18  8:29               ` [Cluster-devel] " Michal Hocko
2017-01-18  8:29               ` Michal Hocko
2017-01-06 14:18 ` [DEBUG PATCH 0/2] debug explicit GFP_NO{FS,IO} usage from the scope context Michal Hocko
2017-01-06 14:18   ` [Cluster-devel] [DEBUG PATCH 0/2] debug explicit GFP_NO{FS, IO} " Michal Hocko
2017-01-06 14:18   ` Michal Hocko
2017-01-06 14:18   ` [DEBUG PATCH 0/2] debug explicit GFP_NO{FS,IO} " Michal Hocko
2017-01-06 14:18   ` Michal Hocko
2017-01-06 14:18   ` Michal Hocko
2017-01-06 14:18   ` [DEBUG PATCH 1/2] mm, debug: report when GFP_NO{FS,IO} is used explicitly from memalloc_no{fs,io}_{save,restore} context Michal Hocko
2017-01-06 14:18     ` [Cluster-devel] [DEBUG PATCH 1/2] mm, debug: report when GFP_NO{FS, IO} is used explicitly from memalloc_no{fs, io}_{save, restore} context Michal Hocko
2017-01-06 14:18     ` Michal Hocko
2017-01-06 14:18     ` [DEBUG PATCH 1/2] mm, debug: report when GFP_NO{FS,IO} is used explicitly from memalloc_no{fs,io}_{save,restore} context Michal Hocko
2017-01-06 14:18     ` Michal Hocko
2017-01-06 14:18     ` Michal Hocko
2017-01-06 14:18   ` [DEBUG PATCH 2/2] silent warnings which we cannot do anything about Michal Hocko
2017-01-06 14:18     ` [Cluster-devel] " Michal Hocko
2017-01-06 14:18     ` Michal Hocko
2017-01-06 14:18     ` Michal Hocko
2017-01-06 14:18     ` Michal Hocko

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=20170109134210.GI7495@dhcp22.suse.cz \
    --to=mhocko@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=ceph-devel@vger.kernel.org \
    --cc=clm@fb.com \
    --cc=cluster-devel@redhat.com \
    --cc=david@fromorbit.com \
    --cc=djwong@kernel.org \
    --cc=dsterba@suse.cz \
    --cc=jack@suse.cz \
    --cc=linux-afs@lists.infradead.org \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-f2fs-devel@lists.sourceforge.net \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=linux-nfs@vger.kernel.org \
    --cc=linux-ntfs-dev@lists.sourceforge.net \
    --cc=linux-xfs@vger.kernel.org \
    --cc=logfs@logfs.org \
    --cc=reiserfs-devel@vger.kernel.org \
    --cc=tytso@mit.edu \
    --cc=vbabka@suse.cz \
    /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.