Home » Mailing lists » Devel » [PATCH 0/59] Cleanup sysctl
[PATCH 58/59] sysctl: Reimplement the sysctl proc support [message #17207 is a reply to message #17149] |
Tue, 16 January 2007 16:40   |
ebiederm
Messages: 1354 Registered: February 2006
|
Senior Member |
|
|
From: Eric W. Biederman <ebiederm@xmission.com> - unquoted
With this change the sysctl inodes can be cached and
nothing needs to be done when removing a sysctl table.
For a costk of 2K code we will save about 4K of static tables
(when we remove de from ctl_table) and 70K in proc_dir_entries
that we will not allocate, or about half that on a 32bit arch.
The speed feels about the same, even though we can now cache
the sysctl dentries :(
We get the core advantage that we don't need to have a
1 to 1 mapping between ctl table entries and proc files.
Making it possible to have /proc/sys vary depending on
the namespace you are in. The currently merged namespaces
don't have an issue here but the network namespace under
/proc/sys/net needs to have different directories depending
on which network adapters are visible. By simply being
a cache different directories being visible depending
on who you are is trivial to implement.
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
---
fs/proc/Makefile | 2 +-
fs/proc/inode.c | 1 +
fs/proc/internal.h | 2 +
fs/proc/proc_sysctl.c | 477 +++++++++++++++++++++++++++++++++++++++++++++++++
fs/proc/root.c | 10 +-
init/main.c | 4 -
kernel/sysctl.c | 182 -------------------
7 files changed, 484 insertions(+), 194 deletions(-)
diff --git a/fs/proc/Makefile b/fs/proc/Makefile
index f6c7762..a6b3a8f 100644
--- a/fs/proc/Makefile
+++ b/fs/proc/Makefile
@@ -8,7 +8,7 @@ proc-y := nommu.o task_nommu.o
proc-$(CONFIG_MMU) := mmu.o task_mmu.o
proc-y += inode.o root.o base.o generic.o array.o \
- proc_tty.o proc_misc.o
+ proc_tty.o proc_misc.o proc_sysctl.o
proc-$(CONFIG_PROC_KCORE) += kcore.o
proc-$(CONFIG_PROC_VMCORE) += vmcore.o
diff --git a/fs/proc/inode.c b/fs/proc/inode.c
index e26945b..0ea8265 100644
--- a/fs/proc/inode.c
+++ b/fs/proc/inode.c
@@ -161,6 +161,7 @@ struct inode *proc_get_inode(struct super_block *sb, unsigned int ino,
if (!inode)
goto out_ino;
+ PROC_I(inode)->fd = 0;
PROC_I(inode)->pde = de;
if (de) {
if (de->mode) {
diff --git a/fs/proc/internal.h b/fs/proc/internal.h
index 987c773..3c9a305 100644
--- a/fs/proc/internal.h
+++ b/fs/proc/internal.h
@@ -11,6 +11,8 @@
#include <linux/proc_fs.h>
+extern int proc_sys_init(void);
+
struct vmalloc_info {
unsigned long used;
unsigned long largest_chunk;
diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c
new file mode 100644
index 0000000..08a2e66
--- /dev/null
+++ b/fs/proc/proc_sysctl.c
@@ -0,0 +1,477 @@
+/*
+ * /proc/sys support
+ */
+
+#include <linux/sysctl.h>
+#include <linux/proc_fs.h>
+#include <linux/security.h>
+#include "internal.h"
+
+static struct dentry_operations proc_sys_dentry_operations;
+static const struct file_operations proc_sys_file_operations;
+static struct inode_operations proc_sys_inode_operations;
+
+static void proc_sys_refresh_inode(struct inode *inode, struct ctl_table *table)
+{
+ /* Refresh the cached information bits in the inode */
+ if (table) {
+ inode->i_uid = 0;
+ inode->i_gid = 0;
+ inode->i_mode = table->mode;
+ if (table->proc_handler) {
+ inode->i_mode |= S_IFREG;
+ inode->i_nlink = 1;
+ } else {
+ inode->i_mode |= S_IFDIR;
+ inode->i_nlink = 0; /* It is too hard to figure out */
+ }
+ }
+}
+
+static struct inode *proc_sys_make_inode(struct inode *dir, struct ctl_table *table)
+{
+ struct inode *inode;
+ struct proc_inode *dir_ei, *ei;
+ int depth;
+
+ inode = new_inode(dir->i_sb);
+ if (!inode)
+ goto out;
+
+ /* A directory is always one deeper than it's parent */
+ dir_ei = PROC_I(dir);
+ depth = dir_ei->fd + 1;
+
+ ei = PROC_I(inode);
+ ei->fd = depth;
+ inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME;
+ inode->i_op = &proc_sys_inode_operations;
+ inode->i_fop = &proc_sys_file_operations;
+ proc_sys_refresh_inode(inode, table);
+out:
+ return inode;
+}
+
+static struct dentry *proc_sys_ancestor(struct dentry *dentry, int depth)
+{
+ for (;;) {
+ struct proc_inode *ei;
+
+ ei = PROC_I(dentry->d_inode);
+ if (ei->fd == depth)
+ break; /* found */
+
+ dentry = dentry->d_parent;
+ }
+ return dentry;
+}
+
+static struct ctl_table *proc_sys_lookup_table_one(struct ctl_table *table,
+ struct qstr *name)
+{
+ int len;
+ for ( ; table->ctl_name || table->procname; table++) {
+
+ if (!table->procname)
+ continue;
+
+ len = strlen(table->procname);
+ if (len != name->len)
+ continue;
+
+ if (memcmp(table->procname, name->name, len) != 0)
+ continue;
+
+ /* I have a match */
+ return table;
+ }
+ return NULL;
+}
+
+static struct ctl_table *proc_sys_lookup_table(struct dentry *dentry,
+ struct ctl_table *table)
+{
+ struct dentry *ancestor;
+ struct proc_inode *ei;
+ int depth, i;
+
+ ei = PROC_I(dentry->d_inode);
+ depth = ei->fd;
+
+ if (depth == 0)
+ return table;
+
+ for (i = 1; table && (i <= depth); i++) {
+ ancestor = proc_sys_ancestor(dentry, i);
+ table = proc_sys_lookup_table_one(table, &ancestor->d_name);
+ if (table)
+ table = table->child;
+ }
+ return table;
+
+}
+static struct ctl_table *proc_sys_lookup_entry(struct dentry *dparent,
+ struct qstr *name,
+ struct ctl_table *table)
+{
+ table = proc_sys_lookup_table(dparent, table);
+ if (table)
+ table = proc_sys_lookup_table_one(table, name);
+ return table;
+}
+
+static struct ctl_table *do_proc_sys_lookup(struct dentry *parent,
+ struct qstr *name,
+ struct ctl_table_header **ptr)
+{
+ struct ctl_table_header *head;
+ struct ctl_table *table;
+
+ for (head = sysctl_head_next(NULL); head; head = sysctl_head_next(head)) {
+ table = proc_sys_lookup_entry(parent, name, head->ctl_table);
+ if (table)
+ break;
+ }
+ *ptr = head;
+ return table;
+}
+
+static struct dentry *proc_sys_lookup(struct inode *dir, struct dentry *dentry,
+ struct nameidata *nd)
+{
+ struct ctl_table_header *head;
+ struct inode *inode;
+ struct dentry *err;
+ struct ctl_table *table;
+
+ err = ERR_PTR(-ENOENT);
+ table = do_proc_sys_lookup(dentry->d_parent, &dentry->d_name, &head);
+ if (!table)
+ goto out;
+
+ err = ERR_PTR(-ENOMEM);
+ inode = proc_sys_make_inode(dir, table);
+ if (!inode)
+ goto out;
+
+ err = NULL;
+ dentry->d_op = &proc_sys_dentry_operations;
+ d_add(dentry, inode);
+
+out:
+ sysctl_head_finish(head);
+ return err;
+}
+
+static ssize_t proc_sys_read(struct file *filp, char __user *buf,
+ size_t count, loff_t *ppos)
+{
+ struct dentry *dentry = filp->f_dentry;
+ struct ctl_table_header *head;
+ struct ctl_table *table;
+ ssize_t error, res;
+
+ table = do_proc_sys_lookup(dentry->d_parent, &dentry->d_name, &head);
+ /* Has the sysctl entry disappeared on us? */
+ error = -ENOENT;
+ if (!table)
+ goto out;
+
+ /* Has the sysctl entry been replaced by a directory? */
+ error = -EISDIR;
+ if (!table->proc_handler)
+ goto out;
+
+ /*
+ * At this point we know that the sysctl was not unregistered
+ * and won't be until we finish.
+ */
+ error = -EPERM;
+ if (sysctl_perm(table, MAY_READ))
+ goto out;
+
+ /* careful: calling conventions are nasty here */
+ res = count;
+ error = table->proc_handler(table, 0, filp, buf, &res, ppos);
+ if (!error)
+ error = res;
+out:
+ sysctl_head_finish(head);
+
+ return error;
+}
+
+static ssize_t proc_sys_write(struct file *filp, const char __user *buf,
+ size_t count, loff_t *ppos)
+{
+ struct dentry *dentry = filp->f_dentry;
+ struct ctl_table_header *head;
+ struct ctl_table *table;
+ ssize_t error, res;
+
+ table = do_proc_sys_lookup(dentry->d_parent, &dentry->d_name, &head);
+ /* Has the sysctl entry disappeared on us? */
+ error = -ENOENT;
+ if (!table)
+ goto out;
+
+ /* Has the sysctl entry been replaced by a directory? */
+ error = -EISDIR;
+ if (!table->proc_handler)
+ goto out;
+
+ /*
+ * At this point we know that the sysctl was not unregistered
+ * and won't be until we finish.
+ */
+ error = -EPERM;
+ if (sysctl_perm(table, MAY_WRITE))
+ goto out;
+
+ /* careful: calling conventions are nasty here */
+ res = count;
+ error = table->proc_handler(table, 1, filp, buf, &res, ppos);
+ if (!error)
+ error = res;
+out:
+ sysctl_head_finish(head);
+
+ return error;
+}
+
+
+static int proc_sys_fill_cache(struct file *filp, void *dirent,
+ filldir_t filldir, struct ctl_table *table)
+{
+ struct ctl_table_header *head;
+ struct ctl_table *child_table = NULL;
+ struct dentry *child, *dir = filp->f_path.dentry;
+ struct inode *inode;
+ struct qstr qname;
+ ino_t ino = 0;
+ unsigned type = DT_UNKNOWN;
+ int ret;
+
+ qname.name = table->procname;
+ qname.len = strlen(table->procname);
+ qname.hash = full_name_hash(qname.name, qname.len);
+
+ /* Suppress duplicates.
+ * Only fill a directory entry if it is the value that
+ * an ordinary lookup of that name returns. Hide all
+ * others.
+ *
+ * If we ever cache this translation in the dcache
+ * I should do a dcache lookup first. But for now
+ * it is just simpler not to.
+ */
+ ret = 0;
+ child_table = do_proc_sys_lookup(dir, &qname, &head);
+ sysctl_head_finish(head);
+ if (child_table != table)
+ return 0;
+
+ child = d_lookup(dir, &qname);
+ if (!child) {
+ struct dentry *new;
+ new = d_alloc(dir, &qname);
+ if (new) {
+ inode = proc_sys_make_inode(dir->d_inode, table);
+ if (!inode)
+ child = ERR_PTR(-ENOMEM);
+ else {
+ new->d_op = &proc_sys_dentry_operations;
+ d_add(new, inode);
+ }
+ if (child)
+ dput(new);
+ else
+ child = new;
+ }
+ }
+ if (!child || IS_ERR(child) || !child->d_inode)
+ goto end_instantiate;
+ inode = child->d_inode;
+ if (inode) {
+ ino = inode->i_ino;
+ type = inode->i_mode >> 12;
+ }
+ dput(child);
+end_instantiate:
+ if (!ino)
+ ino= find_inode_number(dir,
...
|
|
|
 |
|
[PATCH 0/59] Cleanup sysctl
By: ebiederm on Tue, 16 January 2007 16:33
|
 |
|
[PATCH 1/59] sysctl x25: Remove unnecessary insert_at_head from register_sysctl_table.
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 2/59] sysctl: Move CTL_SUNRPC to sysctl.h where it belongs
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 3/59] sysctl: sunrpc Remove unnecessary insert_at_head flag
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 4/59] sysctl: sunrpc Don't unnecessarily set ctl_table->de
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 5/59] sysctl: rose remove unnecessary insert_at_head flag
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
Re: [PATCH 5/59] sysctl: rose remove unnecessary insert_at_head flag
|
 |
|
[PATCH 6/59] sysctl: netrom remove unnecessary insert_at_head flag
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 7/59] sysctl: llc remove unnecessary insert_at_head flag
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 8/59] sysctl: ipx remove unnecessary insert_at_head flag
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 9/59] sysctl: decnet remove unnecessary insert_at_head flag
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 10/59] sysctl: dccp remove unnecessary insert_at_head flag
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 11/59] sysctl: ax25 remove unnecessary insert_at_head flag
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 12/59] sysctl: atalk remove unnecessary insert_at_head flag
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 13/59] sysctl: xfs remove unnecessary insert_at_head flag
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 14/59] sysctl: C99 convert xfs ctl_tables
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
Re: [PATCH 14/59] sysctl: C99 convert xfs ctl_tables
By: dev on Wed, 17 January 2007 17:01
|
 |
|
[PATCH 15/59] sysctl: scsi remove unnecessary insert_at_head flag
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 16/59] sysctl: md Remove unnecessary insert_at_head flag
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 17/59] sysctl: mac_hid remove unnecessary insert_at_head flag
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 18/59] sysctl: ipmi remove unnecessary insert_at_head flag
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
Re: [PATCH 18/59] sysctl: ipmi remove unnecessary insert_at_head flag
|
 |
|
[PATCH 19/59] sysctl: cdrom remove unnecessary insert_at_head flag
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 20/59] sysctl: cdrom Don't set de->owner
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
Re: [PATCH 20/59] sysctl: cdrom Don't set de->owner
|
 |
|
[PATCH 21/59] sysctl: Move CTL_PM into sysctl.h where it belongs.
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 22/59] sysctl: frv pm remove unnecessary insert_at_head flag
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 23/59] sysctl: Move CTL_FRV into sysctl.h where it belongs
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 24/59] sysctl: frv remove unnecessary insert_at_head flag
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 25/59] sysctl: C99 convert arch/frv/kernel/pm.c
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
Re: [PATCH 25/59] sysctl: C99 convert arch/frv/kernel/pm.c
By: dev on Wed, 17 January 2007 17:14
|
 |
|
Re: [PATCH 25/59] sysctl: C99 convert arch/frv/kernel/pm.c
|
 |
|
Re: [PATCH 25/59] sysctl: C99 convert arch/frv/kernel/pm.c
|
 |
|
[PATCH 26/59] sysctl: C99 convert arch/frv/kernel/sysctl.c
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 27/59] sysctl: sn Remove sysctl ABI BREAKAGE
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 28/59] sysctl: C99 Convert arch/ia64/sn/kernel/xpc_main.c
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 29/59] sysctl: C99 convert arch/ia64/kernel/perfmon and remove ABI breakage
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 30/59] sysctl: mips/au1000 Remove sys_sysctl support
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 31/59] sysctl: C99 convert the ctl_tables in arch/mips/au1000/common/power.c
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
Re: [PATCH 31/59] sysctl: C99 convert the ctl_tables in arch/mips/au1000/common/power.c
|
 |
|
[PATCH 32/59] sysctl: C99 convert arch/mips/lasat/sysctl.c and remove ABI breakage.
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 33/59] sysctl: s390 move sysctl definitions to sysctl.h
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
Re: [PATCH 33/59] sysctl: s390 move sysctl definitions to sysctl.h
By: dev on Wed, 17 January 2007 17:23
|
 |
|
[PATCH 34/59] sysctl: s390 Remove unnecessary use of insert_at_head
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 35/59] sysctl: C99 convert ctl_tables in arch/powerpc/kernel/idle.c
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
Re: [PATCH 35/59] sysctl: C99 convert ctl_tables in arch/powerpc/kernel/idle.c
|
 |
|
[PATCH 36/59] sysctl: C99 convert ctl_tables entries in arch/ppc/kernel/ppc_htab.c
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
Re: [PATCH 36/59] sysctl: C99 convert ctl_tables entries in arch/ppc/kernel/ppc_htab.c
|
 |
|
[PATCH 37/59] sysctl: C99 convert arch/sh64/kernel/traps.c and remove ABI breakage.
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
Re: [PATCH 37/59] sysctl: C99 convert arch/sh64/kernel/traps.c and remove ABI breakage.
|
 |
|
[PATCH 38/59] sysctl: x86_64 Remove unnecessary use of insert_at_head
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 39/59] sysctl: C99 convert ctl_tables in arch/x86_64/ia32/ia32_binfmt.c
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 40/59] sysctl: C99 convert ctl_tables in arch/x86_64/kernel/vsyscall.c
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 41/59] sysctl: C99 convert ctl_tables in arch/x86_64/mm/init.c
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 42/59] sysctl: Remove sys_sysctl support from the hpet timer driver.
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 43/59] sysctl: Remove sys_sysctl support from drivers/char/rtc.c
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 44/59] sysctl: Register the sysctl number used by the arlan driver.
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 45/59] sysctl: C99 convert ctl_tables in drivers/parport/procfs.c
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
Re: [PATCH 45/59] sysctl: C99 convert ctl_tables in drivers/parport/procfs.c
By: ebiederm on Tue, 16 January 2007 23:00
|
 |
|
Re: [PATCH 45/59] sysctl: C99 convert ctl_tables in drivers/parport/procfs.c
|
 |
|
[PATCH 46/59] sysctl: C99 convert coda ctl_tables and remove binary sysctls.
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 47/59] sysctl: C99 convert ctl_tables in NTFS and remove sys_sysctl support
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 48/59] sysctl: Register the ocfs2 sysctl numbers
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
Re: [PATCH 48/59] sysctl: Register the ocfs2 sysctl numbers
|
 |
|
[PATCH 49/59] sysctl: Move init_irq_proc into init/main where it belongs
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
Re: [PATCH 49/59] sysctl: Move init_irq_proc into init/main where it belongs
|
 |
|
[PATCH 50/59] sysctl: Move utsname sysctls to their own file
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
Re: [PATCH 50/59] sysctl: Move utsname sysctls to their own file
By: ebiederm on Wed, 17 January 2007 19:31
|
 |
|
Re: [PATCH 50/59] sysctl: Move utsname sysctls to their own file
|
 |
|
Re: [PATCH 50/59] sysctl: Move utsname sysctls to their own file
By: dev on Wed, 17 January 2007 17:41
|
 |
|
[PATCH 51/59] sysctl: Move SYSV IPC sysctls to their own file
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
Re: [PATCH 51/59] sysctl: Move SYSV IPC sysctls to their own file
By: dev on Wed, 17 January 2007 17:44
|
 |
|
[PATCH 52/59] sysctl: Create sys/fs/binfmt_misc as an ordinary sysctl entry
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 53/59] sysctl: Remove support for CTL_ANY
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 54/59] sysctl: Remove support for directory strategy routines.
By: ebiederm on Tue, 16 January 2007 16:39
|
 |
|
[PATCH 55/59] sysctl: Remove insert_at_head from register_sysctl
By: ebiederm on Tue, 16 January 2007 16:40
|
 |
|
[PATCH 56/59] sysctl: factor out sysctl_head_next from do_sysctl
By: ebiederm on Tue, 16 January 2007 16:40
|
 |
|
[PATCH 57/59] sysctl: allow sysctl_perm to be called from outside of sysctl.c
By: ebiederm on Tue, 16 January 2007 16:40
|
 |
|
[PATCH 58/59] sysctl: Reimplement the sysctl proc support
By: ebiederm on Tue, 16 January 2007 16:40
|
 |
|
[PATCH 59/59] sysctl: Remove the proc_dir_entry member for the sysctl tables.
By: ebiederm on Tue, 16 January 2007 16:40
|
 |
|
Re: [PATCH 0/59] Cleanup sysctl
By: hpa on Tue, 16 January 2007 18:35
|
 |
|
Re: [PATCH 0/59] Cleanup sysctl
By: ebiederm on Tue, 16 January 2007 18:54
|
 |
|
Re: [PATCH 0/59] Cleanup sysctl
By: hpa on Tue, 16 January 2007 18:58
|
 |
|
Re: [PATCH 0/59] Cleanup sysctl
By: ebiederm on Tue, 16 January 2007 19:03
|
 |
|
Re: [PATCH 0/59] Cleanup sysctl
By: hpa on Tue, 16 January 2007 19:15
|
 |
|
Re: [PATCH 0/59] Cleanup sysctl
By: ebiederm on Tue, 16 January 2007 19:30
|
 |
|
Re: [PATCH 0/59] Cleanup sysctl
|
 |
|
Re: [PATCH 0/59] Cleanup sysctl
By: ebiederm on Wed, 17 January 2007 19:02
|
 |
|
Re: [PATCH 0/59] Cleanup sysctl
|
 |
|
Re: [PATCH 0/59] Cleanup sysctl
|
 |
|
Re: [PATCH 0/59] Cleanup sysctl
By: dev on Wed, 17 January 2007 18:10
|
Goto Forum:
Current Time: Thu Sep 18 18:47:51 GMT 2025
Total time taken to generate the page: 0.06723 seconds
|