From: Glauber Costa <glommer@parallels.com>
To: Kent Overstreet <koverstreet@google.com>
Cc: "Glauber Costa" <glommer@openvz.org>,
linux-mm@kvack.org, cgroups@vger.kernel.org,
"Andrew Morton" <akpm@linux-foundation.org>,
"Greg Thelen" <gthelen@google.com>,
kamezawa.hiroyu@jp.fujitsu.com, "Michal Hocko" <mhocko@suse.cz>,
"Johannes Weiner" <hannes@cmpxchg.org>,
linux-fsdevel@vger.kernel.org,
"Dave Chinner" <david@fromorbit.com>,
hughd@google.com, "Dave Chinner" <dchinner@redhat.com>,
"Daniel Vetter" <daniel.vetter@ffwll.ch>,
"Arve Hjønnevåg" <arve@android.com>,
"John Stultz" <john.stultz@linaro.org>,
"David Rientjes" <rientjes@google.com>,
"Jerome Glisse" <jglisse@redhat.com>,
"Thomas Hellstrom" <thellstrom@vmware.com>
Subject: Re: [PATCH v7 19/34] drivers: convert shrinkers to new count/scan API
Date: Tue, 4 Jun 2013 13:10:24 +0400 [thread overview]
Message-ID: <51ADAF00.9020605@parallels.com> (raw)
In-Reply-To: <20130603200331.GK2291@google.com>
On 06/04/2013 12:03 AM, Kent Overstreet wrote:
>> - for (i = 0; nr && i < c->bucket_cache_used; i++) {
>> > + for (i = 0; i < c->bucket_cache_used; i++) {
> This is a bug (but it's probably more my fault for writing it too subtly
> in the first place): previously, we broke out of the loop when nr
> reached 0 (and we'd freed all the objects we were asked to).
>
> After your change it doesn't break out of the loop until trying to free
> _everything_ - which will break things very badly since this causes us
> to free our reserve. You'll want a if (freed >= nr) break; like you
> added in the previous loop.
>
> (The reserve should be documented here too though, I'll write a patch
> for that...)
>
Just please notice the following:
This came up a while ago in a discussion in the fs conversion patch.
But nr to scan is the number of objects we as you to *scan*, not to free.
previously, you would only decrement nr when you could free the object.
Since I need to fix the problem anyway here of looping through all of
them, this is what I intend to write:
for (i = 0; (nr--) && i < c->bucket_cache_used; i++) {
[ ... ]
}
This won't test "freed" at all. Shout if you disagree.
--
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>
next prev parent reply other threads:[~2013-06-04 9:10 UTC|newest]
Thread overview: 127+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-19 20:06 [PATCH v7 00/34] kmemcg shrinkers Glauber Costa
2013-05-19 20:06 ` Glauber Costa
2013-05-19 20:06 ` Glauber Costa
2013-05-19 20:06 ` [PATCH v7 01/34] fs: bump inode and dentry counters to long Glauber Costa
2013-05-19 20:06 ` Glauber Costa
2013-05-19 20:06 ` Glauber Costa
2013-05-19 20:06 ` [PATCH v7 02/34] super: fix calculation of shrinkable objects for small numbers Glauber Costa
2013-05-19 20:06 ` Glauber Costa
2013-05-19 20:06 ` [PATCH v7 03/34] dcache: convert dentry_stat.nr_unused to per-cpu counters Glauber Costa
2013-05-19 20:06 ` Glauber Costa
2013-05-19 20:06 ` Glauber Costa
2013-05-19 20:06 ` [PATCH v7 04/34] dentry: move to per-sb LRU locks Glauber Costa
2013-05-19 20:06 ` Glauber Costa
2013-05-19 20:06 ` Glauber Costa
2013-05-19 20:06 ` [PATCH v7 05/34] dcache: remove dentries from LRU before putting on dispose list Glauber Costa
2013-05-19 20:06 ` Glauber Costa
2013-05-19 20:06 ` Glauber Costa
2013-05-19 20:06 ` [PATCH v7 06/34] mm: new shrinker API Glauber Costa
2013-05-19 20:06 ` Glauber Costa
2013-05-19 20:06 ` Glauber Costa
2013-05-19 20:07 ` [PATCH v7 07/34] shrinker: convert superblock shrinkers to new API Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-20 16:39 ` Glauber Costa
2013-05-20 16:39 ` Glauber Costa
2013-05-20 23:40 ` Dave Chinner
2013-05-19 20:07 ` [PATCH v7 08/34] list: add a new LRU list type Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` [PATCH v7 09/34] inode: convert inode lru list to generic lru list code Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` [PATCH v7 10/34] dcache: convert to use new lru list infrastructure Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` [PATCH v7 11/34] list_lru: per-node " Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` [PATCH v7 12/34] shrinker: add node awareness Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` [PATCH v7 13/34] vmscan: per-node deferred work Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` [PATCH v7 14/34] list_lru: per-node API Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` [PATCH v7 15/34] fs: convert inode and dentry shrinking to be node aware Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` [PATCH v7 16/34] xfs: convert buftarg LRU to generic code Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` [PATCH v7 17/34] xfs: convert dquot cache lru to list_lru Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` [PATCH v7 18/34] fs: convert fs shrinkers to new scan/count API Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-20 8:25 ` Steven Whitehouse
2013-05-20 13:46 ` Glauber Costa
2013-05-20 13:46 ` Glauber Costa
2013-05-20 13:46 ` Glauber Costa
2013-05-20 15:25 ` Glauber Costa
2013-05-20 15:25 ` Glauber Costa
2013-05-20 15:25 ` Glauber Costa
2013-05-20 23:38 ` Dave Chinner
2013-05-20 23:42 ` Glauber Costa
2013-05-20 23:42 ` Glauber Costa
2013-05-20 23:42 ` Glauber Costa
2013-05-19 20:07 ` [PATCH v7 19/34] drivers: convert shrinkers to new count/scan API Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-06-03 20:03 ` Kent Overstreet
2013-06-04 9:06 ` Glauber Costa
2013-06-04 9:10 ` Glauber Costa [this message]
2013-05-19 20:07 ` [PATCH v7 20/34] i915: bail out earlier when shrinker cannot acquire mutex Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` [PATCH v7 21/34] shrinker: convert remaining shrinkers to count/scan API Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` [PATCH v7 22/34] hugepage: convert huge zero page shrinker to new shrinker API Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` [PATCH v7 23/34] shrinker: Kill old ->shrink API Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` [PATCH v7 24/34] vmscan: also shrink slab in memcg pressure Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` [PATCH v7 25/34] memcg,list_lru: duplicate LRUs upon kmemcg creation Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` [PATCH v7 26/34] lru: add an element to a memcg list Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` [PATCH v7 27/34] list_lru: per-memcg walks Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` [PATCH v7 28/34] memcg: per-memcg kmem shrinking Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` [PATCH v7 29/34] memcg: scan cache objects hierarchically Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` [PATCH v7 30/34] vmscan: take at least one pass with shrinkers Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` [PATCH v7 31/34] super: targeted memcg reclaim Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` [PATCH v7 32/34] memcg: move initialization to memcg creation Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` [PATCH v7 33/34] vmpressure: in-kernel notifications Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` [PATCH v7 34/34] memcg: reap dead memcgs upon global memory pressure Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-19 20:07 ` Glauber Costa
2013-05-21 7:03 ` [PATCH v7 00/34] kmemcg shrinkers Glauber Costa
2013-05-21 7:03 ` Glauber Costa
2013-05-21 7:18 ` Dave Chinner
2013-05-21 7:27 ` Glauber Costa
2013-05-21 7:27 ` Glauber Costa
2013-05-21 7:27 ` Glauber Costa
2013-05-22 6:26 ` Dave Chinner
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=51ADAF00.9020605@parallels.com \
--to=glommer@parallels.com \
--cc=akpm@linux-foundation.org \
--cc=arve@android.com \
--cc=cgroups@vger.kernel.org \
--cc=daniel.vetter@ffwll.ch \
--cc=david@fromorbit.com \
--cc=dchinner@redhat.com \
--cc=glommer@openvz.org \
--cc=gthelen@google.com \
--cc=hannes@cmpxchg.org \
--cc=hughd@google.com \
--cc=jglisse@redhat.com \
--cc=john.stultz@linaro.org \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=koverstreet@google.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@suse.cz \
--cc=rientjes@google.com \
--cc=thellstrom@vmware.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.