From: tytso@mit.edu
To: linux-kernel@vger.kernel.org
Cc: ext2-devel@lists.sourceforge.net
Subject: [RFC] [PATCH 1/4] Add extended attributes to ext2/3
Date: Tue, 08 Oct 2002 14:08:11 -0400 [thread overview]
Message-ID: <E17yymB-00021j-00@think.thunk.org> (raw)
This is the first of four patches which add extended attribute support
to the ext2 and ext3 filesystems. It is a port of Andreas Gruenbacher's
patches, which have been well tested and in a number of distributions
(including RH 8, if I'm not mistaken) already. I just ported it to 2.5
(these patches are versus 2.5.40). As always, since I touched the code
last, any problems in it are my fault. :-)
These patches are prerequisite for the port of the Andreas Gruenbacher's
ACL patches to 2.5, which I'm currently working on. But given the short
time-frame before feature freeze, I'd like to get these out for review
ASAP. Please comment and bleed on them.
This first patch creates a generic interface for registering caches with
the VM subsystem so that they can react appropriately to memory
pressure.
# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
#
# include/linux/cache_def.h | 15 +++++++++++++++
# kernel/ksyms.c | 3 +++
# mm/vmscan.c | 29 +++++++++++++++++++++++++++++
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/10/04 tytso@think.thunk.org 1.665
# Port of the 0.8.50 cache-def patch.
# --------------------------------------------
#
diff -Nru a/include/linux/cache_def.h b/include/linux/cache_def.h
--- /dev/null Wed Dec 31 16:00:00 1969
+++ b/include/linux/cache_def.h Tue Oct 8 13:52:08 2002
@@ -0,0 +1,15 @@
+/*
+ * linux/cache_def.h
+ * Handling of caches defined in drivers, filesystems, ...
+ *
+ * Copyright (C) 2002 by Andreas Gruenbacher, <a.gruenbacher@computer.org>
+ */
+
+struct cache_definition {
+ const char *name;
+ void (*shrink)(int, unsigned int);
+ struct list_head link;
+};
+
+extern void register_cache(struct cache_definition *);
+extern void unregister_cache(struct cache_definition *);
diff -Nru a/kernel/ksyms.c b/kernel/ksyms.c
--- a/kernel/ksyms.c Tue Oct 8 13:52:08 2002
+++ b/kernel/ksyms.c Tue Oct 8 13:52:08 2002
@@ -31,6 +31,7 @@
#include <linux/genhd.h>
#include <linux/blkpg.h>
#include <linux/swap.h>
+#include <linux/cache_def.h>
#include <linux/ctype.h>
#include <linux/file.h>
#include <linux/iobuf.h>
@@ -106,6 +107,8 @@
EXPORT_SYMBOL(kmem_cache_alloc);
EXPORT_SYMBOL(kmem_cache_free);
EXPORT_SYMBOL(kmem_cache_size);
+EXPORT_SYMBOL(register_cache);
+EXPORT_SYMBOL(unregister_cache);
EXPORT_SYMBOL(kmalloc);
EXPORT_SYMBOL(kfree);
EXPORT_SYMBOL(vfree);
diff -Nru a/mm/vmscan.c b/mm/vmscan.c
--- a/mm/vmscan.c Tue Oct 8 13:52:08 2002
+++ b/mm/vmscan.c Tue Oct 8 13:52:08 2002
@@ -15,6 +15,7 @@
#include <linux/slab.h>
#include <linux/kernel_stat.h>
#include <linux/swap.h>
+#include <linux/cache_def.h>
#include <linux/pagemap.h>
#include <linux/init.h>
#include <linux/highmem.h>
@@ -76,6 +77,33 @@
#define shrink_dqcache_memory(ratio, gfp_mask) do { } while (0)
#endif
+static LIST_HEAD(cache_definitions);
+
+/* BKL must be held */
+void register_cache(struct cache_definition *cache)
+{
+ list_add(&cache->link, &cache_definitions);
+}
+
+/* BLK must be held */
+void unregister_cache(struct cache_definition *cache)
+{
+ list_del(&cache->link);
+}
+
+static void shrink_other_caches(int ratio, int gfp_mask)
+{
+ struct list_head *p = cache_definitions.prev;
+
+ while (p != &cache_definitions) {
+ struct cache_definition *cache =
+ list_entry(p, struct cache_definition, link);
+
+ cache->shrink(ratio, gfp_mask); /* BLK held */
+ p = p->prev;
+ }
+}
+
/* Must be called with page's pte_chain_lock held. */
static inline int page_mapping_inuse(struct page * page)
{
@@ -614,6 +642,7 @@
shrink_dcache_memory(ratio, gfp_mask);
shrink_icache_memory(ratio, gfp_mask);
shrink_dqcache_memory(ratio, gfp_mask);
+ shrink_other_caches(ratio, gfp_mask);
return nr_pages;
}
next reply other threads:[~2002-10-08 18:02 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-10-08 18:08 tytso [this message]
2002-10-08 18:19 ` [Ext2-devel] [RFC] [PATCH 1/4] Add extended attributes to ext2/3 Christoph Hellwig
2002-10-08 18:38 ` Andrew Morton
2002-10-08 18:47 ` Andreas Gruenbacher
2002-10-08 19:10 ` Rik van Riel
2002-10-10 6:56 ` Andrew Morton
2002-10-08 18:40 ` Theodore Ts'o
2002-10-08 18:50 ` Christoph Hellwig
2002-10-08 22:37 ` Ed Tomlinson
2002-10-08 18:21 ` Rik van Riel
2002-10-08 18:59 ` [Ext2-devel] " Andreas Gruenbacher
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=E17yymB-00021j-00@think.thunk.org \
--to=tytso@mit.edu \
--cc=ext2-devel@lists.sourceforge.net \
--cc=linux-kernel@vger.kernel.org \
/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.