linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Tejun Heo <htejun@gmail.com>
To: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Benjamin Thery <benjamin.thery@bull.net>,
	Greg Kroah-Hartman <gregkh@suse.de>,
	Andrew Morton <akpm@linux-foundation.org>,
	Daniel Lezcano <dlezcano@fr.ibm.com>,
	Serge Hallyn <serue@us.ibm.com>,
	linux-kernel@vger.kernel.org, Al Viro <viro@ftp.linux.org.uk>,
	Linux Containers <containers@lists.osdl.org>
Subject: Re: [PATCH 06/11] sysfs: Implement sysfs tagged directory support.
Date: Tue, 01 Jul 2008 15:47:48 +0900	[thread overview]
Message-ID: <4869D314.5030403@gmail.com> (raw)
In-Reply-To: <m18wwmsqdv.fsf@frodo.ebiederm.org>

Hello, Eric.

Eric W. Biederman wrote:
>> It's still dynamic from sysfs's POV and I think that will make
>> maintenance more difficult.
> 
> Potentially.  I have no problem make it clear that things are more static.

Great. :-)

>> What you described is pretty much what I'm talking about.  The only
>> difference is whether to use caller-provided pointer as tag or an
>> ida-allocated integer.  The last sentence of the above paragraph is
>> basically sys_tag_enabled() function (maybe misnamed).
> 
> So some concrete code examples here.  In the current code in lookup
> what I am doing is: 
> 
> 	tag = sysfs_lookup_tag(parent_sd, parent->d_sb);
> 	sd = sysfs_find_dirent(parent_sd, tag, dentry->d_name.name);
> 
> With the proposed change of adding tag types sysfs_lookup_tag becomes:
> 
> const void *sysfs_lookup_tag(struct sysfs_dirent *dir_sd, struct super_block *sb)
> {
> 	const void *tag = NULL;
> 
> 	if (dir_sd->s_flags & SYSFS_FLAG_TAGGED)
> 		tag = sysfs_info(sb)->tag[dir_sd->tag_type];
> 
> 	return tag;
> }	    
> 
> Which means that in practice I can lookup that tag that I am displaying
> once.
> 
> Then in sysfs_find_dirent we do:
> 
> 	for (sd = parent_sd->s_dir.children; sd; sd = sd->s_sibling) {
> 		 if ((parent_sd->s_flags & SYSFS_FLAG_TAGGED) &&		
> 		     (sd->s_tag.tag != tag))			  
> 			 continue;
> 		 if (!strcmp(sd->s_name, name))
> 			 return sd;					  
> 	}						    
> 
> That should keep the implementation sufficiently inside of sysfs for there
> to be no guessing.  In addition as a practical matter we can only allow
> one tag to be visible in a directory at once or else we can not check
> for duplicate names.  Which is the problem I see with a bitmap based test
> too unnecessary many degrees of freedom.

Having enumed tag types limits that a sb can have map to only one tag
but it doesn't really prevent multiple possibly visible entries which is
the real unnecessary degrees of freedom.  That said, I don't really
think it's an issue.

> The number of tag types will be low as it is the number of subsystems
> that use the feature.  Simple enough that I expect statically allocating
> the tag types in an enumeration is a safe and sane way to operate.
> i.e.
> 
> enum sysfs_tag_types {
> 	SYSFS_TAG_NETNS,
> 	SYSFS_TAG_USERNS,
>         SYSFS_TAG_MAX
> };

I still would prefer something which is more generic.  The abstraction
is clearer too.  A sb shows untagged and a set of tags.  A sd can either
be untagged or tagged (a single tag).

>> The main reason why I'm whining about this so much is because I think
>> tag should be something abstracted inside sysfs proper.  It's something
>> which affects very internal operation of sysfs and I really want to keep
>> the implementation details inside sysfs.  Spreading implementation over
>> kobject and sysfs didn't turn out too pretty after all.
> 
> I agree. Most of the implementation is in sysfs already.  We just have
> a few corner cases.  
> 
> Fundamentally it is the subsystems responsibility that creates the
> kobjects and the sysfs entries.  The only case where I can see an
> ida generated number being a help is if we start having lifetime
> issues.  Further the  extra work to allocate and free tags ida based
> tags seems unnecessary.
> 
> I don't doubt that there is a lot we can do better.  My current goal
> is for something that is clean enough it won't get us into trouble
> later, and then merging the code.  In tree where people can see
> the code and the interactions I expect it will be easier to talk
> about.
> 
> Currently the interface with the users is very small.  Adding the
> tag_type enumeration should make it smaller and make things more
> obviously static.

Using ida (or idr if a pointer for private data is necessary) is really
easy.  It'll probably take a few tens of lines of code.  That said, I
don't think I have enough rationale to nack what you described.  So, as
long as the tags are made static, I won't object.

Thanks.

-- 
tejun

  parent reply	other threads:[~2008-07-01  6:48 UTC|newest]

Thread overview: 138+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-06-18 17:07 [PATCH 00/11] sysfs tagged directories V6 Benjamin Thery
2008-06-18 17:07 ` [PATCH 01/11] sysfs: Support for preventing unmounts Benjamin Thery
2008-06-18 17:44   ` Dave Hansen
2008-06-18 20:12     ` Eric W. Biederman
2008-06-19  8:54       ` Benjamin Thery
2008-06-19 16:32       ` Dave Hansen
2008-06-19 20:19         ` Benjamin Thery 
2008-06-18 17:07 ` [PATCH 02/11] sysfs: sysfs_get_dentry add a sb parameter Benjamin Thery
2008-06-18 17:07 ` [PATCH 03/11] sysfs: Implement __sysfs_get_dentry Benjamin Thery
2008-06-18 17:08 ` [PATCH 04/11] sysfs: Rename Support multiple superblocks Benjamin Thery
2008-06-18 17:08 ` [PATCH 05/11] sysfs: sysfs_chmod_file handle " Benjamin Thery
2008-06-22  4:46   ` Tejun Heo
2008-06-23 21:42     ` Daniel Lezcano
2008-06-24  4:45       ` Tejun Heo
2008-06-24 10:39         ` Daniel Lezcano
2008-06-24 13:37         ` Daniel Lezcano
2008-06-25 12:31           ` Tejun Heo
2008-06-18 17:08 ` [PATCH 06/11] sysfs: Implement sysfs tagged directory support Benjamin Thery
2008-06-23  2:05   ` Tejun Heo
2008-06-26 20:21     ` Eric W. Biederman
2008-06-29  3:51       ` Tejun Heo
2008-06-30 18:56         ` Eric W. Biederman
2008-06-30 21:44           ` Serge E. Hallyn
2008-07-01  7:50             ` Eric W. Biederman
2008-07-01  6:47           ` Tejun Heo [this message]
2008-07-01  9:20             ` Eric W. Biederman
2008-07-01 10:30               ` Tejun Heo
2008-07-01 12:30                 ` Eric W. Biederman
2008-07-02  3:24                   ` Tejun Heo
2008-07-02  3:53                     ` Eric W. Biederman
2008-07-02  4:37                       ` Tejun Heo
2008-07-02 16:49                         ` Eric W. Biederman
2008-07-03  0:15                           ` Greg KH
2008-07-03  3:18                           ` Tejun Heo
2008-07-03  5:11                             ` Eric W. Biederman
2008-07-03 10:56                               ` Daniel Lezcano
2008-07-03 12:27                                 ` Eric W. Biederman
2008-07-03 12:37                                   ` Benjamin Thery
2008-07-03 19:57                                     ` Eric W. Biederman
2008-07-03 12:55                                   ` Daniel Lezcano
2008-07-03 15:58                                   ` Tejun Heo
2008-07-03 18:29                                     ` Daniel Lezcano
2008-07-03 20:08                                     ` Eric W. Biederman
2008-07-04  0:48                                     ` [PATCH 00/15] sysfs support for namespaces Eric W. Biederman
2008-07-04  1:05                                       ` [PATCH 01/15] kobject: Cleanup kobject_rename and !CONFIG_SYSFS Eric W. Biederman
2008-07-04  1:07                                         ` [PATCH 02/15] sysfs: Support for preventing unmounts Eric W. Biederman
2008-07-04  1:08                                           ` [PATCH 03/15] sysfs: sysfs_get_dentry add a sb parameter Eric W. Biederman
2008-07-04  1:09                                             ` [PATCH 04/15] sysfs: Implement __sysfs_get_dentry Eric W. Biederman
2008-07-04  1:10                                               ` [PATCH 05/15] sysfs: Rename Support multiple superblocks Eric W. Biederman
2008-07-04  1:11                                                 ` [PATCH 06/15] Introduce sysfs_sd_setattr and fix sysfs_chmod Eric W. Biederman
2008-07-04  1:13                                                   ` [PATCH 07/15] sysfs: sysfs_chmod_file handle multiple superblocks Eric W. Biederman
2008-07-04  1:14                                                     ` [PATCH 08/15] sysfs: Make sysfs_mount static once again Eric W. Biederman
2008-07-04  1:16                                                       ` [PATCH 09/15] sysfs: Implement sysfs tagged directory support Eric W. Biederman
2008-07-04  1:17                                                         ` [PATCH 10/15] sysfs: Merge sysfs_rename_dir and sysfs_move_dir Eric W. Biederman
2008-07-04  1:18                                                           ` [PATCH 11/15] sysfs: Implement sysfs_delete_link and sysfs_rename_link Eric W. Biederman
2008-07-04  1:20                                                             ` [PATCH 12/15] driver core: Implement tagged directory support for device classes Eric W. Biederman
2008-07-04  1:21                                                               ` [PATCH 13/15] Revert "netns: Fix device renaming for sysfs" Eric W. Biederman
2008-07-04  1:22                                                                 ` [PATCH 14/15] netns: Enable tagging for net_class directories in sysfs Eric W. Biederman
2008-07-04  1:23                                                                   ` [PATCH 15/15] sysfs: user namespaces: fix bug with clone(CLONE_NEWUSER) with fairsched Eric W. Biederman
2008-07-04  7:50                                                               ` [PATCH 12/15] driver core: Implement tagged directory support for device classes Tejun Heo
2008-07-04 13:31                                                                 ` Eric W. Biederman
2008-07-04 13:57                                                                   ` Tejun Heo
2008-07-04 16:12                                                                     ` Greg KH
2008-07-04 21:49                                                                       ` Eric W. Biederman
2008-07-14  1:54                                                                       ` Eric W. Biederman
2008-07-16  3:25                                                                         ` Tejun Heo
2008-07-16  5:41                                                                           ` Eric W. Biederman
2008-07-16  5:50                                                                             ` Tejun Heo
2008-07-16  6:32                                                                               ` Eric W. Biederman
2008-07-16  6:48                                                                                 ` Tejun Heo
2008-07-16  7:02                                                                                   ` Tejun Heo
2008-07-16 19:07                                                                                     ` Eric W. Biederman
2008-07-16 21:09                                                                                   ` Eric W. Biederman
2008-07-17 23:08                                                                           ` Greg KH
2008-07-18 12:41                                                                             ` Tejun Heo
2008-07-18 18:49                                                                               ` Greg KH
2008-07-18 20:19                                                                                 ` Eric W. Biederman
2008-07-19  1:07                                                                                 ` Tejun Heo
2008-08-03  6:59                                                                                 ` Eric W. Biederman
2008-09-11 12:45                                                                                   ` Jiri Slaby
2008-09-11 13:05                                                                                     ` Benjamin Thery
2008-09-12  6:32                                                                                       ` Jiri Slaby
2008-07-04 22:00                                                                     ` Eric W. Biederman
2008-08-20  2:17                                                         ` [PATCH 09/15] sysfs: Implement sysfs tagged directory support Greg KH
2008-08-20  6:58                                                           ` Eric W. Biederman
2008-08-21  6:31                                                           ` [PATCH 0/8] sysfs namespace support Eric W. Biederman
2008-08-21  6:33                                                             ` [PATCH 1/8] sysfs: Implement sysfs tagged directory support Eric W. Biederman
2008-08-21  6:34                                                               ` [PATCH 2/8] sysfs: Merge sysfs_rename_dir and sysfs_move_dir Eric W. Biederman
2008-08-21  6:35                                                                 ` [PATCH 3/8] sysfs: Implement sysfs_delete_link and sysfs_rename_link Eric W. Biederman
2008-08-21  6:36                                                                   ` [PATCH 5/8] sysfs: Remove sysfs_create_link_nowarn Eric W. Biederman
2008-08-21  6:38                                                                     ` [PATCH 6/8] Revert "netns: Fix device renaming for sysfs" Eric W. Biederman
2008-08-21  6:39                                                                       ` [PATCH 7/8] netns: Enable tagging for net_class directories in sysfs Eric W. Biederman
2008-08-21  6:40                                                                         ` [PATCH 8/8] sysfs: user namespaces: fix bug with clone(CLONE_NEWUSER) with fairsched Eric W. Biederman
2008-08-21  6:47                                                                         ` [PATCH 7/8] netns: Enable tagging for net_class directories in sysfs David Miller
2008-08-21  6:47                                                                       ` [PATCH 6/8] Revert "netns: Fix device renaming for sysfs" David Miller
2008-08-21  6:37                                                                   ` [PATCH 4/8] driver core: Implement tagged directory support for device classes Eric W. Biederman
2008-08-27 15:18                                                               ` [PATCH 1/8] sysfs: Implement sysfs tagged directory support Benjamin Thery
2008-09-02 13:54                                                                 ` Mark Ryden
2008-09-02 14:03                                                                   ` Benjamin Thery
2008-09-02 17:01                                                                     ` Greg KH
2008-09-04  5:33                                                                       ` David Shwatrz
2008-09-04  6:44                                                                         ` Benjamin Thery
2008-09-08 18:39                                                                           ` Mark Ryden
2008-10-07 16:39                                                                           ` Mark Ryden
2008-10-07 16:48                                                                             ` Greg KH
2008-10-07 20:31                                                                               ` Eric W. Biederman
2008-10-07 21:09                                                                                 ` Greg KH
2008-10-07 22:27                                                                                   ` Eric W. Biederman
2008-10-08 13:00                                                                                     ` Christoph Hellwig
2008-10-14  3:20                                                                                       ` Eric W. Biederman
2008-10-07 16:52                                                                             ` Daniel Lezcano
2008-08-21  6:37                                                             ` [PATCH 0/8] sysfs namespace support David Miller
2008-07-04  6:44                                                       ` [PATCH 08/15] sysfs: Make sysfs_mount static once again Tejun Heo
2008-07-04  6:44                                                     ` [PATCH 07/15] sysfs: sysfs_chmod_file handle multiple superblocks Tejun Heo
2008-07-04  6:40                                                   ` [PATCH 06/15] Introduce sysfs_sd_setattr and fix sysfs_chmod Tejun Heo
2008-07-04  6:33                                         ` [PATCH 01/15] kobject: Cleanup kobject_rename and !CONFIG_SYSFS Tejun Heo
2008-07-04  1:27                                       ` [PATCH 00/15] sysfs support for namespaces Eric W. Biederman
2008-07-06  4:42                                       ` Eric W. Biederman
2008-07-07 11:41                                         ` Cornelia Huck
2008-07-07 12:22                                           ` Eric W. Biederman
2008-06-18 17:08 ` [PATCH 07/11] sysfs: Implement sysfs_delete_link and sysfs_rename_link Benjamin Thery
2008-06-23  2:13   ` Tejun Heo
2008-06-26 20:24     ` Eric W. Biederman
2008-06-29  3:35       ` Tejun Heo
2008-06-30  3:02         ` Eric W. Biederman
2008-06-18 17:08 ` [PATCH 08/11] driver core: Implement tagged directory support for device classes Benjamin Thery
2008-06-18 17:08 ` [PATCH 09/11] sysfs: add sysfs_ns_exit routine Benjamin Thery
2008-06-18 20:19   ` Eric W. Biederman
2008-06-23  2:16   ` Tejun Heo
2008-06-18 17:09 ` [PATCH 10/11] netns: Enable tagging for net_class directories in sysfs Benjamin Thery
2008-06-23  2:18   ` Tejun Heo
2008-06-18 17:09 ` [PATCH 11/11] sysfs: user namespaces: fix bug with clone(CLONE_NEWUSER) with fairsched Benjamin Thery
2008-06-23  2:18   ` Tejun Heo
2008-06-25 18:44     ` Serge E. Hallyn
2008-06-25 21:11       ` Eric W. Biederman
2008-06-26 13:07         ` Serge E. Hallyn
  -- strict thread matches above, loose matches on Subject: below --
2008-06-06 15:46 [PATCH 00/11] sysfs tagged directories V5 Benjamin Thery
2008-06-06 15:47 ` [PATCH 06/11] sysfs: Implement sysfs tagged directory support Benjamin Thery
2008-05-06 17:30 [RESEND][PATCH 00/11] sysfs tagged directories Benjamin Thery
2008-05-06 17:31 ` [PATCH 06/11] sysfs: Implement sysfs tagged directory support Benjamin Thery

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=4869D314.5030403@gmail.com \
    --to=htejun@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=benjamin.thery@bull.net \
    --cc=containers@lists.osdl.org \
    --cc=dlezcano@fr.ibm.com \
    --cc=ebiederm@xmission.com \
    --cc=gregkh@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=serue@us.ibm.com \
    --cc=viro@ftp.linux.org.uk \
    /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;
as well as URLs for NNTP newsgroup(s).