From: Paul Jackson <pj@sgi.com>
To: Joel Becker <Joel.Becker@oracle.com>
Cc: matthltc@us.ibm.com, linux-kernel@vger.kernel.org, gregkh@suse.de
Subject: Re: [ckrm-tech] [PATCH 0/5] Allow more than PAGESIZE data read in configfs
Date: Thu, 12 Oct 2006 17:01:25 -0700 [thread overview]
Message-ID: <20061012170125.504153ec.pj@sgi.com> (raw)
In-Reply-To: <20061012225146.GX7911@ca-server1.us.oracle.com>
Joel wrote:
> Sure, no dispute here. My argument point isn't that "vector of
> scalars is inherently evil" (I'll leave that aside), it's that a
> facility allowing or encouraging the format change or blowup is
> unhealthy.
Ok ... yes simply extending the size is changing the protocol
at too low a level ... an invitation to future abuse. I'll agree
somewhat with your concern there.
Is there some way to accept an array of scalars? Some change
in the API that configfs presents to the kernel code using it,
that would let that code say "here's an array of u32, of length
so-and-so?"
Hmmm ... having spouted off for three messages now ... decided to
actually look at this ;).
Let me consider a different approach ...
At the top of Documentation/filesystems/configfs/configfs.txt,
I see:
configfs is a ram-based filesystem that provides the converse of
sysfs's functionality. Where sysfs is a filesystem-based view of
kernel objects, configfs is a filesystem-based manager of kernel
objects, or config_items.
I guess this means that sysfs presents the gauges, and configfs
the knobs.
This seems like a bit of an artificial split to me - view (mostly
read) here, and manage (mostly write) here.
Not entirely surprisingly, I'm fond of the cpuset approach -- all
things cpuset-related in one place, both viewing and managing.
Similarly, /proc is a repository for all things task related, and
/dev for all devices (well, with various exceptions, contradictions,
confusions, and historical raisins ...)
There should indeed be a place for various kernel guages and knobs that
don't merit having their own entire file system. And since we already
have a separate sysfs and configfs, better to leave that aspect be, as
two separate name spaces ... despite my rant about this being an
artificial split a few lines above.
And if configfs wants to (continue to) impose a rule that there is a
single, simple scalar per file, that may well fit its needs and guide
its future extensions in the best way.
But if something like Resource Groups comes along, I'd think it deserves
its own file system name space (though sometimes I am sympathetic to
suggestions to merge this one into the cpuset name space -- not sure.)
Underneath each of these filesystems, sysfs, configfs, cpuset, resource
groups, ... it would seem ideal if we had a single kernel file system
infrastructure. Actually, we're only a half a layer from having that,
with vfs. It just takes a fair bit of glue to construct any of these
file systems out of vfs primitives.
I wonder if there might be someway to share that glue? I am envisioning
a new glue layer, mostly in the kernel internal headers and lib
directory, that sits on top of the current vfs, and makes it easy for
virtual file system presenters such as sysfs, configfs, cpusets and
resource groups to construct the particular virtual file system they
require.
I would expect this glue layer to support vectors of scalars, even if
some of its users, such as configfs, chose not to expose that
possibility. Arguments between configfs and resource group developers
over the value of presenting vectors suggest we've gone astray -
enforcing commonality where it is not beneficial to do so.
I would not expect such a change to using common vfs glue to change
much, if at all, existing client kernel code that uses configfs or
sysfs (or cpusets.) The configfs example code in:
Documentation/filesystems/configfs/configfs_example.c
should continue to work, as is.
I would expect to reduce a little some cut and paste code duplication,
hence reduce the kernel text size and reduce kernel maintenance and
improve a little the ease with which future features (Resource Groups,
say) can add their own virtual file system hierarchies.
This means creating a new kernel internal API, by which the various
clients (sysfs, configfs, cpusets, ...) of this common glue layer can
represent the particular instance of such a virtual file system that
they require, and hook in their operational methods. Then it means
porting the existing such virtual file systems, such as configfs, sysfs
and cpusets, to this common glue infrastructure.
--
I won't rest till it's the best ...
Programmer, Linux Scalability
Paul Jackson <pj@sgi.com> 1.925.600.0401
next prev parent reply other threads:[~2006-10-13 0:01 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-10-10 18:20 [PATCH 0/5] Allow more than PAGESIZE data read in configfs Chandra Seetharaman
2006-10-10 18:20 ` [PATCH 1/5] Fix a module count leak Chandra Seetharaman
2006-10-10 22:17 ` Joel Becker
2006-10-10 18:20 ` [PATCH 2/5] Use seq_file for read side of operations Chandra Seetharaman
2006-10-11 9:12 ` Joel Becker
2006-10-10 18:21 ` [PATCH 3/5] Change configfs_example.c to use the new interface Chandra Seetharaman
2006-10-10 18:21 ` [PATCH 4/5] Change Documentation to reflect " Chandra Seetharaman
2006-10-10 18:21 ` [PATCH 5/5] Change the existing code to use " Chandra Seetharaman
2006-10-10 20:35 ` [PATCH 0/5] Allow more than PAGESIZE data read in configfs Joel Becker
2006-10-10 21:31 ` [ckrm-tech] " Paul Menage
2006-10-10 21:58 ` Joel Becker
2006-10-10 23:13 ` Chandra Seetharaman
2006-10-11 0:15 ` Joel Becker
2006-10-11 0:49 ` Matt Helsley
2006-10-11 1:28 ` Joel Becker
2006-10-11 22:39 ` Greg KH
2006-10-11 23:26 ` Chandra Seetharaman
2006-10-12 4:17 ` Paul Jackson
2006-10-12 23:51 ` Greg KH
2006-10-13 0:16 ` Paul Jackson
2006-10-13 23:38 ` Matt Helsley
2006-10-13 23:40 ` Matt Helsley
2006-10-13 23:47 ` Paul Menage
2006-10-14 6:17 ` Greg KH
2006-10-14 23:14 ` Matt Helsley
2006-10-16 19:10 ` Chandra Seetharaman
2006-10-16 20:32 ` Paul Jackson
2006-10-16 22:29 ` Chandra Seetharaman
2006-10-17 2:59 ` Paul Jackson
2006-10-12 2:17 ` Matt Helsley
2006-10-12 23:54 ` Greg KH
2006-10-13 3:22 ` Matt Helsley
[not found] ` <20061011220619.GB7911@ca-server1.us.oracle.com>
[not found] ` <1160619516.18766.209.camel@localhost.localdomain>
2006-10-12 7:08 ` Joel Becker
2006-10-12 21:44 ` Paul Jackson
2006-10-12 22:51 ` Joel Becker
2006-10-13 0:01 ` Paul Jackson [this message]
2006-10-14 4:40 ` Greg KH
2006-10-13 23:37 ` Matt Helsley
2006-10-14 0:09 ` Joel Becker
2006-10-15 1:06 ` Matt Helsley
2006-10-15 19:07 ` Paul Jackson
2006-10-16 19:33 ` Chandra Seetharaman
2006-10-16 23:07 ` Joel Becker
2006-10-11 20:19 ` Andrew Morton
2006-10-11 21:41 ` Joel Becker
2006-10-11 22:18 ` Joel Becker
2006-10-11 22:48 ` Andrew Morton
2006-10-11 23:27 ` Chandra Seetharaman
2006-10-14 8:01 ` Greg KH
2006-10-14 19:43 ` Andrew Morton
2006-10-14 20:10 ` Joel Becker
2006-10-16 19:24 ` Chandra Seetharaman
2006-10-16 23:09 ` Joel Becker
2006-10-18 0:55 ` Chandra Seetharaman
2006-10-19 18:42 ` Joel Becker
2006-10-16 19:16 ` Chandra Seetharaman
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=20061012170125.504153ec.pj@sgi.com \
--to=pj@sgi.com \
--cc=Joel.Becker@oracle.com \
--cc=gregkh@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=matthltc@us.ibm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox