diff for duplicates of <20180312223632.GA6124@castle> diff --git a/a/1.txt b/N1/1.txt index 611cd9d..0293639 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -39,58 +39,3 @@ Although it shouldn't be that important in practice. Thank you! -- - ->From ad9d6c627c2b9315de1967c40a1f4fa68705cf9e Mon Sep 17 00:00:00 2001 -From: Roman Gushchin <guro@fb.com> -Date: Mon, 12 Mar 2018 22:24:28 +0000 -Subject: [PATCH] dcache: fix indirectly reclaimable memory accounting - -Signed-off-by: Roman Gushchin <guro@fb.com> ---- - fs/dcache.c | 17 +++++++++++++++-- - 1 file changed, 15 insertions(+), 2 deletions(-) - -diff --git a/fs/dcache.c b/fs/dcache.c -index 98826efe22a0..19bc7495a6c4 100644 ---- a/fs/dcache.c -+++ b/fs/dcache.c -@@ -266,6 +266,19 @@ static void __d_free(struct rcu_head *head) - kmem_cache_free(dentry_cache, dentry); - } - -+static void __d_free_external_name(struct rcu_head *head) -+{ -+ struct external_name *name; -+ -+ name = container_of(head, struct external_name, u.head); -+ -+ mod_node_page_state(page_pgdat(virt_to_page(name)), -+ NR_INDIRECTLY_RECLAIMABLE_BYTES, -+ -ksize(name)); -+ -+ kfree(name); -+} -+ - static void __d_free_external(struct rcu_head *head) - { - struct dentry *dentry = container_of(head, struct dentry, d_u.d_rcu); -@@ -307,7 +320,7 @@ void release_dentry_name_snapshot(struct name_snapshot *name) - struct external_name *p; - p = container_of(name->name, struct external_name, name[0]); - if (unlikely(atomic_dec_and_test(&p->u.count))) -- kfree_rcu(p, u.head); -+ call_rcu(&p->u.head, __d_free_external_name); - } - } - EXPORT_SYMBOL(release_dentry_name_snapshot); -@@ -2769,7 +2782,7 @@ static void copy_name(struct dentry *dentry, struct dentry *target) - dentry->d_name.hash_len = target->d_name.hash_len; - } - if (old_name && likely(atomic_dec_and_test(&old_name->u.count))) -- kfree_rcu(old_name, u.head); -+ call_rcu(&old_name->u.head, __d_free_external_name); - } - - static void dentry_lock_for_move(struct dentry *dentry, struct dentry *target) --- -2.14.3 diff --git a/a/content_digest b/N1/content_digest index 122ecce..b15714e 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -5,13 +5,13 @@ "Subject\0Re: [PATCH 3/3] dcache: account external names as indirectly reclaimable memory\0" "Date\0Mon, 12 Mar 2018 22:36:38 +0000\0" "To\0Al Viro <viro@zeniv.linux.org.uk>\0" - "Cc\0<linux-mm@kvack.org>" + "Cc\0linux-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>\0" + linux-fsdevel@vger.kernel.org + linux-kernel@vger.kernel.org + " kernel-team@fb.com\0" "\00:1\0" "b\0" "On Mon, Mar 12, 2018 at 09:17:42PM +0000, Al Viro wrote:\n" @@ -54,61 +54,6 @@ "\n" "Thank you!\n" "\n" - "--\n" - "\n" - ">From ad9d6c627c2b9315de1967c40a1f4fa68705cf9e Mon Sep 17 00:00:00 2001\n" - "From: Roman Gushchin <guro@fb.com>\n" - "Date: Mon, 12 Mar 2018 22:24:28 +0000\n" - "Subject: [PATCH] dcache: fix indirectly reclaimable memory accounting\n" - "\n" - "Signed-off-by: Roman Gushchin <guro@fb.com>\n" - "---\n" - " fs/dcache.c | 17 +++++++++++++++--\n" - " 1 file changed, 15 insertions(+), 2 deletions(-)\n" - "\n" - "diff --git a/fs/dcache.c b/fs/dcache.c\n" - "index 98826efe22a0..19bc7495a6c4 100644\n" - "--- a/fs/dcache.c\n" - "+++ b/fs/dcache.c\n" - "@@ -266,6 +266,19 @@ static void __d_free(struct rcu_head *head)\n" - " \tkmem_cache_free(dentry_cache, dentry); \n" - " }\n" - " \n" - "+static void __d_free_external_name(struct rcu_head *head)\n" - "+{\n" - "+\tstruct external_name *name;\n" - "+\n" - "+\tname = container_of(head, struct external_name, u.head);\n" - "+\n" - "+\tmod_node_page_state(page_pgdat(virt_to_page(name)),\n" - "+\t\t\t NR_INDIRECTLY_RECLAIMABLE_BYTES,\n" - "+\t\t\t -ksize(name));\n" - "+\n" - "+\tkfree(name);\n" - "+}\n" - "+\n" - " static void __d_free_external(struct rcu_head *head)\n" - " {\n" - " \tstruct dentry *dentry = container_of(head, struct dentry, d_u.d_rcu);\n" - "@@ -307,7 +320,7 @@ void release_dentry_name_snapshot(struct name_snapshot *name)\n" - " \t\tstruct external_name *p;\n" - " \t\tp = container_of(name->name, struct external_name, name[0]);\n" - " \t\tif (unlikely(atomic_dec_and_test(&p->u.count)))\n" - "-\t\t\tkfree_rcu(p, u.head);\n" - "+\t\t\tcall_rcu(&p->u.head, __d_free_external_name);\n" - " \t}\n" - " }\n" - " EXPORT_SYMBOL(release_dentry_name_snapshot);\n" - "@@ -2769,7 +2782,7 @@ static void copy_name(struct dentry *dentry, struct dentry *target)\n" - " \t\tdentry->d_name.hash_len = target->d_name.hash_len;\n" - " \t}\n" - " \tif (old_name && likely(atomic_dec_and_test(&old_name->u.count)))\n" - "-\t\tkfree_rcu(old_name, u.head);\n" - "+\t\tcall_rcu(&old_name->u.head, __d_free_external_name);\n" - " }\n" - " \n" - " static void dentry_lock_for_move(struct dentry *dentry, struct dentry *target)\n" - "-- \n" - 2.14.3 + -- -80acdff4e7647590f988bf8904fdcf309990871dbc78159882ec6f01f353a7f9 +f5999c3b547583f7f56c3d970e45ab92f68d26d5ad9e099746d39f4b3d0f3913
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.