From: Jeff Liu <jeff.liu@oracle.com>
To: Michal Hocko <mhocko@suse.cz>
Cc: linux-mm@kvack.org, cgroups@vger.kernel.org,
Glauber Costa <glommer@parallels.com>
Subject: Re: [RFC PATCH 1/3] memcg: refactor pages allocation/free for swap_cgroup
Date: Tue, 04 Dec 2012 18:46:05 +0800 [thread overview]
Message-ID: <50BDD46D.9070404@oracle.com> (raw)
In-Reply-To: <20121204101137.GA1343@dhcp22.suse.cz>
Hi Michal,
Thanks for your prompt response.
On 12/04/2012 06:11 PM, Michal Hocko wrote:
> On Tue 04-12-12 16:35:55, Jeff Liu wrote:
> [...]
>> /*
>> - * allocate buffer for swap_cgroup.
>> + * Allocate pages for swap_cgroup upon a given type.
>> */
>> -static int swap_cgroup_prepare(int type)
>> +static int swap_cgroup_alloc_pages(int type)
>
> I am not sure this name is better. The whole point of the function is
> the prepare swap accounting internals. Yeah we are allocating here as
> well but this is not that important.
I spent nearly half time of writing these patches to figure out a couple
of meaningful names for pages allocation/free, but...
Maybe I should keeping the old name(swap_cgroup_prepare()) unchanged and
don't introduce the corresponding swap_cgroup_free_pages(), since this
helper only called by swap_cgroup_destroy() in my current implementation.
> It also feels strange that the function name suggests we allocate pages
> but none of them are returned.
Yep, generally, only those functions with pages allocated and returned
should be named as xxxx_alloc_pages_xxx(), it really looks strange so.
>
>> {
>> - struct page *page;
>> struct swap_cgroup_ctrl *ctrl;
>> - unsigned long idx, max;
>> + unsigned long i, length, max;
>>
>> ctrl = &swap_cgroup_ctrl[type];
>> -
>> - for (idx = 0; idx < ctrl->length; idx++) {
>> - page = alloc_page(GFP_KERNEL | __GFP_ZERO);
>> + length = ctrl->length;
>> + for (i = 0; i < length; i++) {
>> + struct page *page = alloc_page(GFP_KERNEL | __GFP_ZERO);
>> if (!page)
>> goto not_enough_page;
>> - ctrl->map[idx] = page;
>> + ctrl->map[i] = page;
>> }
>> +
>> return 0;
>> +
>> not_enough_page:
>> - max = idx;
>> - for (idx = 0; idx < max; idx++)
>> - __free_page(ctrl->map[idx]);
>> + max = i;
>> + for (i = 0; i < max; i++)
>> + __free_page(ctrl->map[i]);
>>
>> return -ENOMEM;
>> }
>
> Is there any reason for the local variables rename exercise?
> I really do not like it.
Ah, I can not recall why I renamed it at that time, will change it
back in the next round of post.
>
>>
>> +static void swap_cgroup_free_pages(int type)
>> +{
>> + struct swap_cgroup_ctrl *ctrl;
>> + struct page **map;
>> +
>> + ctrl = &swap_cgroup_ctrl[type];
>> + map = ctrl->map;
>> + if (map) {
>> + unsigned long length = ctrl->length;
>> + unsigned long i;
>> +
>> + for (i = 0; i < length; i++) {
>> + struct page *page = map[i];
>> + if (page)
>> + __free_page(page);
>> + }
>> + }
>> +}
>> +
>
> This function is not used in this patch so I would suggest moving it
> into the #2.
Ok. Maybe it will be merged into swap_cgroup_destroy() as is mentioned
above.
>
>> static struct swap_cgroup *lookup_swap_cgroup(swp_entry_t ent,
>> struct swap_cgroup_ctrl **ctrlp)
>> {
>> @@ -477,7 +497,7 @@ int swap_cgroup_swapon(int type, unsigned long max_pages)
>> ctrl->length = length;
>> ctrl->map = array;
>> spin_lock_init(&ctrl->lock);
>> - if (swap_cgroup_prepare(type)) {
>> + if (swap_cgroup_alloc_pages(type)) {
>> /* memory shortage */
>> ctrl->map = NULL;
>> ctrl->length = 0;
>
Thanks Again!
-Jeff
--
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:[~2012-12-04 10:46 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-04 8:35 [RFC PATCH 0/3] Disable swap cgroup allocation at system boot stage Jeff Liu
2012-12-04 8:35 ` [RFC PATCH 1/3] memcg: refactor pages allocation/free for swap_cgroup Jeff Liu
2012-12-04 10:11 ` Michal Hocko
2012-12-04 10:46 ` Jeff Liu [this message]
2012-12-04 8:36 ` [RFC PATCH 2/3] memcg: disable pages allocation for swap cgroup on system booting up Jeff Liu
2012-12-04 11:17 ` Michal Hocko
[not found] ` <20121204111721.GB1343-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2012-12-04 11:22 ` Michal Hocko
2012-12-04 11:22 ` Michal Hocko
2012-12-04 12:34 ` Michal Hocko
2012-12-04 12:34 ` Michal Hocko
2012-12-04 12:51 ` Jeff Liu
2012-12-04 8:36 ` [RFC PATCH 3/3] memcg: allocate pages for swap cgroup until the first child memcg is alive Jeff Liu
[not found] ` <50BDB601.4090205-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2012-12-04 12:54 ` Michal Hocko
2012-12-04 12:54 ` Michal Hocko
2012-12-04 13:14 ` Jeff Liu
[not found] ` <50BDB5E0.7030906-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2012-12-04 13:18 ` [RFC PATCH 0/3] Disable swap cgroup allocation at system boot stage Michal Hocko
2012-12-04 13:18 ` Michal Hocko
2012-12-04 14:00 ` Jeff Liu
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=50BDD46D.9070404@oracle.com \
--to=jeff.liu@oracle.com \
--cc=cgroups@vger.kernel.org \
--cc=glommer@parallels.com \
--cc=linux-mm@kvack.org \
--cc=mhocko@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.