From: Pavel Emelyanov <xemul@parallels.com>
To: Hugh Dickins <hughd@google.com>, Nick Piggin <npiggin@kernel.dk>,
Andrea Arcangeli <aarcange@redhat.com>,
Rik van Riel <riel@redhat.com>,
Dave Hansen <dave@linux.vnet.ibm.com>,
Alexa
Cc: linux-fsdevel <linux-fsdevel@vger.kernel.org>
Subject: [PATCH 10/13] vfs: Routnes for setting mob size and getting stats
Date: Tue, 03 May 2011 16:19:21 +0400 [thread overview]
Message-ID: <4DBFF2C9.3090605@parallels.com> (raw)
In-Reply-To: <4DBFF1AD.90303@parallels.com>
Very simple ones, just to make the further patching simpler.
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
---
fs/dcache.c | 30 ++++++++++++++++++++++++++++++
include/linux/dcache.h | 7 +++++++
2 files changed, 37 insertions(+), 0 deletions(-)
diff --git a/fs/dcache.c b/fs/dcache.c
index 51fb998..bdacea3 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -3006,6 +3006,36 @@ int dcache_new_mob(struct dentry *root)
return 0;
}
+int dcache_set_mob_size(struct dentry *de, unsigned long size)
+{
+ struct dentry_mob *mob = de->d_mob;
+ unsigned long usage;
+
+ if (mob == &init_dentry_mob) /* for safety */
+ return 0;
+
+ mob->nr_dentry_max = size;
+ usage = percpu_counter_sum_positive(&mob->nr_dentry);
+ if (usage > mob->nr_dentry_max)
+ prune_dcache(mob, usage - mob->nr_dentry_max);
+
+ return 0;
+}
+
+int dcache_get_mob_stat(struct dentry *de, struct dentry_mob_stat __user *stat)
+{
+ struct dentry_mob *mob = de->d_mob;
+ struct dentry_mob_stat kstat;
+
+ kstat.nr_dentry = percpu_counter_sum_positive(&mob->nr_dentry);
+ kstat.nr_dentry_max = mob->nr_dentry_max;
+
+ if (copy_to_user(stat, &kstat, sizeof(kstat)))
+ return -EFAULT;
+
+ return 0;
+}
+
static __initdata unsigned long dhash_entries;
static int __init set_dhash_entries(char *str)
{
diff --git a/include/linux/dcache.h b/include/linux/dcache.h
index 3681307..0d13966 100644
--- a/include/linux/dcache.h
+++ b/include/linux/dcache.h
@@ -55,7 +55,14 @@ struct dentry_mob {
};
struct dentry;
+struct dentry_mob_stat {
+ unsigned long nr_dentry;
+ unsigned long nr_dentry_max;
+};
+
int dcache_new_mob(struct dentry *root);
+int dcache_set_mob_size(struct dentry *de, unsigned long size);
+int dcache_get_mob_stat(struct dentry *de, struct dentry_mob_stat __user *stat);
/*
* Compare 2 name strings, return 0 if they match, otherwise non-zero.
--
1.5.5.6
next prev parent reply other threads:[~2011-05-03 12:19 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-03 12:14 [RFC][PATCH 0/13] Per-container dcache management (and a bit more) Pavel Emelyanov
2011-05-03 12:15 ` [PATCH 1/13] vfs: Lighten r/o rename_lock lockers Pavel Emelyanov
2011-05-03 12:15 ` [PATCH 2/13] vfs: Factor out rename_lock locking Pavel Emelyanov
2011-05-03 12:16 ` [PATCH 3/13] vfs: Make the rename_lock per-sb Pavel Emelyanov
2011-05-03 12:16 ` [PATCH 4/13] vfs: Factor out tree (of four) shrinkers code Pavel Emelyanov
2011-05-03 12:17 ` [PATCH 5/13] vfs: Make dentry LRU list global Pavel Emelyanov
2011-05-03 12:17 ` [PATCH 6/13] vfs: Turn the nr_dentry into percpu_counter Pavel Emelyanov
2011-05-03 12:18 ` [PATCH 7/13] vfs: Limit the number of dentries globally Pavel Emelyanov
2011-05-03 12:18 ` [PATCH 8/13] vfs: Introduce the dentry mobs Pavel Emelyanov
2011-06-18 13:40 ` Andrea Arcangeli
2011-05-03 12:18 ` [PATCH 9/13] vfs: More than one mob management Pavel Emelyanov
2011-05-03 12:19 ` Pavel Emelyanov [this message]
2011-05-03 12:19 ` [PATCH 11/13] vfs: Make shrink_dcache_memory prune dcache from all mobs Pavel Emelyanov
2011-05-03 12:20 ` [PATCH 12/13] vfs: Mobs creation and mgmt API Pavel Emelyanov
2011-05-03 12:20 ` [PATCH 13/13] vfs: Dentry mobs listing in proc Pavel Emelyanov
2011-05-06 1:05 ` [RFC][PATCH 0/13] Per-container dcache management (and a bit more) Dave Chinner
2011-05-06 12:15 ` Pavel Emelyanov
2011-05-07 0:01 ` Dave Chinner
2011-05-10 11:18 ` Pavel Emelyanov
2011-06-18 13:30 ` Andrea Arcangeli
2011-06-20 0:49 ` Dave Chinner
2011-07-04 5:32 ` Pavel Emelyanov
2011-05-23 6:43 ` Pavel Emelyanov
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=4DBFF2C9.3090605@parallels.com \
--to=xemul@parallels.com \
--cc=aarcange@redhat.com \
--cc=dave@linux.vnet.ibm.com \
--cc=hughd@google.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=npiggin@kernel.dk \
--cc=riel@redhat.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.