From: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Johannes Weiner <hannes@cmpxchg.org>,
Vladimir Davydov <vdavydov@virtuozzo.com>,
Michal Hocko <mhocko@suse.cz>,
cgroups@vger.kernel.org, linux-mm@kvack.org,
linux-kernel@vger.kernel.org,
Sergey Senozhatsky <sergey.senozhatsky@gmail.com>,
Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
Subject: Re: [PATCH] mm/workingset: do not forget to unlock page
Date: Wed, 3 Feb 2016 19:41:36 +0900 [thread overview]
Message-ID: <20160203104136.GA517@swordfish> (raw)
In-Reply-To: <1454493513-19316-1-git-send-email-sergey.senozhatsky@gmail.com>
On (02/03/16 18:58), Sergey Senozhatsky wrote:
>
> Do not leave page locked (and RCU read side locked) when
> return from workingset_activation() due to disabled memcg
> or page not being a page_memcg().
d'oh... sorry, the commit message is simply insane.
apparently the patch fixes a new code
mm-workingset-per-cgroup-cache-thrash-detection.patch added to -mm tree
mm-simplify-lock_page_memcg.patch added to -mm tree
so if there is an option to fold this patch into mm-simplify-lock_page_memcg,
for example, as a -fix, then I wouldn't mind at all.
a better commit message
===8<====8<====
From 1d6315221f2f81c53c99f9980158f8ae49dbd582 Mon Sep 17 00:00:00 2001
From: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Date: Wed, 3 Feb 2016 18:49:16 +0900
Subject: [PATCH] mm/workingset: do not forget to unlock_page in workingset_activation
Do not return from workingset_activation() with locked rcu and page.
Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
---
mm/workingset.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/mm/workingset.c b/mm/workingset.c
index 14522ed..54138a9 100644
--- a/mm/workingset.c
+++ b/mm/workingset.c
@@ -315,8 +315,10 @@ void workingset_activation(struct page *page)
* XXX: See workingset_refault() - this should return
* root_mem_cgroup even for !CONFIG_MEMCG.
*/
- if (!mem_cgroup_disabled() && !page_memcg(page))
+ if (!mem_cgroup_disabled() && !page_memcg(page)) {
+ unlock_page_memcg(page);
return;
+ }
lruvec = mem_cgroup_zone_lruvec(page_zone(page), page_memcg(page));
atomic_long_inc(&lruvec->inactive_age);
unlock_page_memcg(page);
--
2.7.0
--
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: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Johannes Weiner <hannes@cmpxchg.org>,
Vladimir Davydov <vdavydov@virtuozzo.com>,
Michal Hocko <mhocko@suse.cz>,
cgroups@vger.kernel.org, linux-mm@kvack.org,
linux-kernel@vger.kernel.org,
Sergey Senozhatsky <sergey.senozhatsky@gmail.com>,
Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
Subject: Re: [PATCH] mm/workingset: do not forget to unlock page
Date: Wed, 3 Feb 2016 19:41:36 +0900 [thread overview]
Message-ID: <20160203104136.GA517@swordfish> (raw)
In-Reply-To: <1454493513-19316-1-git-send-email-sergey.senozhatsky@gmail.com>
On (02/03/16 18:58), Sergey Senozhatsky wrote:
>
> Do not leave page locked (and RCU read side locked) when
> return from workingset_activation() due to disabled memcg
> or page not being a page_memcg().
d'oh... sorry, the commit message is simply insane.
apparently the patch fixes a new code
mm-workingset-per-cgroup-cache-thrash-detection.patch added to -mm tree
mm-simplify-lock_page_memcg.patch added to -mm tree
so if there is an option to fold this patch into mm-simplify-lock_page_memcg,
for example, as a -fix, then I wouldn't mind at all.
a better commit message
===8<====8<====
WARNING: multiple messages have this Message-ID (diff)
From: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Johannes Weiner <hannes@cmpxchg.org>,
Vladimir Davydov <vdavydov@virtuozzo.com>,
Michal Hocko <mhocko@suse.cz>,
cgroups@vger.kernel.org, linux-mm@kvack.org,
linux-kernel@vger.kernel.org,
Sergey Senozhatsky <sergey.senozhatsky@gmail.com>,
Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
Subject: Re: [PATCH] mm/workingset: do not forget to unlock page
Date: Wed, 3 Feb 2016 19:41:36 +0900 [thread overview]
Message-ID: <20160203104136.GA517@swordfish> (raw)
In-Reply-To: <1454493513-19316-1-git-send-email-sergey.senozhatsky@gmail.com>
On (02/03/16 18:58), Sergey Senozhatsky wrote:
>
> Do not leave page locked (and RCU read side locked) when
> return from workingset_activation() due to disabled memcg
> or page not being a page_memcg().
d'oh... sorry, the commit message is simply insane.
apparently the patch fixes a new code
mm-workingset-per-cgroup-cache-thrash-detection.patch added to -mm tree
mm-simplify-lock_page_memcg.patch added to -mm tree
so if there is an option to fold this patch into mm-simplify-lock_page_memcg,
for example, as a -fix, then I wouldn't mind at all.
a better commit message
===8<====8<====
>From 1d6315221f2f81c53c99f9980158f8ae49dbd582 Mon Sep 17 00:00:00 2001
From: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Date: Wed, 3 Feb 2016 18:49:16 +0900
Subject: [PATCH] mm/workingset: do not forget to unlock_page in workingset_activation
Do not return from workingset_activation() with locked rcu and page.
Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
---
mm/workingset.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/mm/workingset.c b/mm/workingset.c
index 14522ed..54138a9 100644
--- a/mm/workingset.c
+++ b/mm/workingset.c
@@ -315,8 +315,10 @@ void workingset_activation(struct page *page)
* XXX: See workingset_refault() - this should return
* root_mem_cgroup even for !CONFIG_MEMCG.
*/
- if (!mem_cgroup_disabled() && !page_memcg(page))
+ if (!mem_cgroup_disabled() && !page_memcg(page)) {
+ unlock_page_memcg(page);
return;
+ }
lruvec = mem_cgroup_zone_lruvec(page_zone(page), page_memcg(page));
atomic_long_inc(&lruvec->inactive_age);
unlock_page_memcg(page);
--
2.7.0
next prev parent reply other threads:[~2016-02-03 10:41 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-03 9:58 [PATCH] mm/workingset: do not forget to unlock page Sergey Senozhatsky
2016-02-03 9:58 ` Sergey Senozhatsky
2016-02-03 10:41 ` Sergey Senozhatsky [this message]
2016-02-03 10:41 ` Sergey Senozhatsky
2016-02-03 10:41 ` Sergey Senozhatsky
2016-02-03 16:24 ` Johannes Weiner
2016-02-03 16:24 ` Johannes Weiner
[not found] ` <20160203162400.GB10440-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2016-02-03 21:19 ` Andrew Morton
2016-02-03 21:19 ` Andrew Morton
2016-02-03 21:19 ` Andrew Morton
[not found] ` <20160203131939.1a35d9bc03f13b2b143d27c0-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2016-02-03 22:02 ` Johannes Weiner
2016-02-03 22:02 ` Johannes Weiner
2016-02-03 22:02 ` Johannes Weiner
[not found] ` <20160203220253.GA6859-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2016-02-04 0:19 ` Sergey Senozhatsky
2016-02-04 0:19 ` Sergey Senozhatsky
2016-02-04 0:19 ` Sergey Senozhatsky
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=20160203104136.GA517@swordfish \
--to=sergey.senozhatsky.work@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=cgroups@vger.kernel.org \
--cc=hannes@cmpxchg.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@suse.cz \
--cc=sergey.senozhatsky@gmail.com \
--cc=vdavydov@virtuozzo.com \
/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.