All of lore.kernel.org
 help / color / mirror / Atom feed
From: Al Viro <viro@ZenIV.linux.org.uk>
To: Roman Gushchin <guro@fb.com>
Cc: linux-mm@kvack.org, Andrew Morton <akpm@linux-foundation.org>,
	Michal Hocko <mhocko@suse.com>,
	Johannes Weiner <hannes@cmpxchg.org>,
	linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
	kernel-team@fb.com
Subject: Re: [PATCH 3/3] dcache: account external names as indirectly reclaimable memory
Date: Mon, 12 Mar 2018 21:17:42 +0000	[thread overview]
Message-ID: <20180312211742.GR30522@ZenIV.linux.org.uk> (raw)
In-Reply-To: <20180305133743.12746-5-guro@fb.com>

On Mon, Mar 05, 2018 at 01:37:43PM +0000, Roman Gushchin wrote:
> diff --git a/fs/dcache.c b/fs/dcache.c
> index 5c7df1df81ff..a0312d73f575 100644
> --- a/fs/dcache.c
> +++ b/fs/dcache.c
> @@ -273,8 +273,16 @@ static void __d_free(struct rcu_head *head)
>  static void __d_free_external(struct rcu_head *head)
>  {
>  	struct dentry *dentry = container_of(head, struct dentry, d_u.d_rcu);
> -	kfree(external_name(dentry));
> -	kmem_cache_free(dentry_cache, dentry); 
> +	struct external_name *name = external_name(dentry);
> +	unsigned long bytes;
> +
> +	bytes = dentry->d_name.len + offsetof(struct external_name, name[1]);
> +	mod_node_page_state(page_pgdat(virt_to_page(name)),
> +			    NR_INDIRECTLY_RECLAIMABLE_BYTES,
> +			    -kmalloc_size(kmalloc_index(bytes)));
> +
> +	kfree(name);
> +	kmem_cache_free(dentry_cache, dentry);
>  }

That can't be right - external names can be freed in release_dentry_name_snapshot()
and copy_name() as well.  When do you want kfree_rcu() paths accounted for, BTW?
At the point where we are freeing them, or where we are scheduling their freeing?

  reply	other threads:[~2018-03-12 21:17 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-05 13:37 [PATCH 0/3] indirectly reclaimable memory Roman Gushchin
2018-03-05 13:37 ` Roman Gushchin
2018-03-05 13:37 ` Roman Gushchin
2018-03-05 13:37 ` [PATCH 1/3] mm: introduce NR_INDIRECTLY_RECLAIMABLE_BYTES Roman Gushchin
2018-03-05 13:37   ` Roman Gushchin
2018-03-05 13:37   ` Roman Gushchin
2018-04-11 13:16   ` Vlastimil Babka
2018-04-11 13:56     ` Roman Gushchin
2018-04-11 13:56       ` Roman Gushchin
2018-04-12  6:52       ` Vlastimil Babka
2018-04-12 11:52         ` Michal Hocko
2018-04-12 14:38           ` Roman Gushchin
2018-04-12 14:38             ` Roman Gushchin
2018-04-12 14:46             ` Michal Hocko
2018-04-12 14:57         ` Roman Gushchin
2018-04-12 14:57           ` Roman Gushchin
2018-04-13  6:59           ` Michal Hocko
2018-04-13 12:13           ` vinayak menon
2018-04-25  3:49             ` Vijayanand Jitta
2018-04-25 12:52               ` Roman Gushchin
2018-04-25 12:52                 ` Roman Gushchin
2018-04-25 15:47                 ` Vlastimil Babka
2018-04-25 16:48                   ` Roman Gushchin
2018-04-25 16:48                     ` Roman Gushchin
2018-04-25 17:02                     ` Vlastimil Babka
2018-04-25 17:23                       ` Roman Gushchin
2018-04-25 17:23                         ` Roman Gushchin
2018-04-25 15:55             ` Matthew Wilcox
2018-04-25 16:59               ` Vlastimil Babka
2018-03-05 13:37 ` [PATCH 2/3] mm: add indirectly reclaimable memory to MemAvailable Roman Gushchin
2018-03-05 13:37   ` Roman Gushchin
2018-03-05 13:37   ` Roman Gushchin
2018-03-05 13:47   ` Roman Gushchin
2018-03-05 13:47     ` Roman Gushchin
2018-03-05 13:47     ` Roman Gushchin
2018-03-05 13:37 ` [PATCH 2/3] mm: treat indirectly reclaimable memory as available in MemAvailable Roman Gushchin
2018-03-05 13:37   ` Roman Gushchin
2018-03-05 13:37   ` Roman Gushchin
2018-03-05 13:37 ` [PATCH 3/3] dcache: account external names as indirectly reclaimable memory Roman Gushchin
2018-03-05 13:37   ` Roman Gushchin
2018-03-05 13:37   ` Roman Gushchin
2018-03-12 21:17   ` Al Viro [this message]
2018-03-12 22:36     ` Roman Gushchin
2018-03-12 22:36       ` Roman Gushchin
2018-03-13  0:45       ` Al Viro
2018-04-05 22:11         ` Andrew Morton
2018-04-06 10:32           ` Roman Gushchin
2018-04-06 10:32             ` Roman Gushchin
2018-04-13 13:35   ` Minchan Kim
2018-04-13 13:59     ` Michal Hocko
2018-04-13 14:20       ` Vlastimil Babka
2018-04-13 14:28         ` Michal Hocko
2018-04-13 14:37           ` Johannes Weiner
2018-04-16 11:41             ` Michal Hocko
2018-04-16 12:06               ` Vlastimil Babka
2018-04-16 12:27                 ` Michal Hocko
2018-04-16 19:57                   ` Vlastimil Babka
2018-04-17  6:44                     ` Michal Hocko
2018-04-16 13:09                 ` Matthew Wilcox
2018-04-17 11:24               ` Roman Gushchin
2018-04-17 11:24                 ` Roman Gushchin

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=20180312211742.GR30522@ZenIV.linux.org.uk \
    --to=viro@zeniv.linux.org.uk \
    --cc=akpm@linux-foundation.org \
    --cc=guro@fb.com \
    --cc=hannes@cmpxchg.org \
    --cc=kernel-team@fb.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mhocko@suse.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.