Re: [RFC][PATCH 1 of 4] Configfs is really sysfs

Joel Becker
2005-09-04T04:54:57Z

On Sat, Sep 03, 2005 at 09:41:36PM -0700, Joel Becker wrote:
> On Sat, Sep 03, 2005 at 09:12:24PM -0700, Joel Becker wrote:
> > On Tue, Aug 30, 2005 at 04:28:46PM -0700, Andrew Morton wrote:
> > > Sure, but all that copying-and-pasting really sucks. I'm sure there's some
> > > way of providing the slightly different semantics from the same codebase?
>

So, what conclusions can we draw from looking at this again?
First, merging the kobject/kset structures with the
config_item/config_group structures has one benefit: they have the same
name. However, that's also the first problem. As it currently stands,
you know from the name what you are working with. If they have the same
name, you don't know if you are working with an object in sysfs or
configfs. We call a pid "pid_t" rather than "unsigned int" for the same
reason, clarity of usage.
Merging them has a lot of other problems. Far from removing
code bloat (a configfs object and a sysfs object need different
initialization, etc, so there would be two paths anyway), it adds
significant memory bloat, as configfs objects and sysfs objects are
carrying around members for the other filesystem. Finally, there are
surprises in store if you try to use some of the API that isn't
appropriate. With a different name and type, you just _can't_ do that.
We could perhaps share the attribute structure. This has the
same name confusion problem above, but that's about it, assuming that
sysfs never wants to do anything smarter with them. I'm hoping the
sysfs folks comment on this.
Sharing the attribute file code is much harder. They operate on
different types, and those types are laid out differently. I think we'd
have to make the API far more invasive. Instead of black-boxing the API
and having only show/store to implement, we'd have to provide some sort
of translation from the native structure to a shared type. Basically,
repeating what the VFS has already done for us.
Finally, assuming that the sysfs_dirent/configfs_dirent
arrangement is pretty fleshed out, I think that perhaps this backing
store could be joined. Again, no more magic could be added, and it
would have to handle the sysfs and configfs types in concurrence, but I
think it could be done. Again, sysfs folks, please comment.

Joel

--

"Hell is oneself, hell is alone, the other figures in it, merely projections."
- T. S. Eliot

Joel Becker
Senior Member of Technical Staff
Oracle
E-mail: joel.becker@oracle.com
Phone: (650) 506-8127