Re: [PATCH 06/11] sysfs: Implement sysfs tagged directory support.

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Tejun Heo <htejun@...>
Cc: Benjamin Thery <benjamin.thery@...>, Greg Kroah-Hartman <gregkh@...>, Andrew Morton <akpm@...>, Daniel Lezcano <dlezcano@...>, Serge Hallyn <serue@...>, <linux-kernel@...>, Al Viro <viro@...>, Linux Containers <containers@...>
Date: Monday, June 30, 2008 - 2:56 pm

Tejun Heo <htejun@gmail.com> writes:


Potentially.  I have no problem make it clear that things are more static.


See below.


Ah.  When we are doing readdir or lookup.  Yes that makes sense.

See below.  I honestly think sysfs_tab_enabled is the wrong question.


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.

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 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.

Guys can we please make something useful happen?

Eric
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Re: [PATCH 06/11] sysfs: Implement sysfs tagged directory su..., Eric W. Biederman, (Thu Jun 26, 4:21 pm)
Re: [PATCH 06/11] sysfs: Implement sysfs tagged directory su..., Eric W. Biederman, (Mon Jun 30, 2:56 pm)
Re: [PATCH 06/11] sysfs: Implement sysfs tagged directory su..., Eric W. Biederman, (Tue Jul 1, 11:53 pm)
Re: [PATCH 06/11] sysfs: Implement sysfs tagged directory su..., Eric W. Biederman, (Wed Jul 2, 12:49 pm)
[PATCH 00/15] sysfs support for namespaces, Eric W. Biederman, (Thu Jul 3, 8:48 pm)
Re: [PATCH 00/15] sysfs support for namespaces, Eric W. Biederman, (Sun Jul 6, 12:42 am)
Re: [PATCH 00/15] sysfs support for namespaces, Cornelia Huck, (Mon Jul 7, 7:41 am)
Re: [PATCH 00/15] sysfs support for namespaces, Eric W. Biederman, (Mon Jul 7, 8:22 am)
Re: [PATCH 00/15] sysfs support for namespaces, Eric W. Biederman, (Thu Jul 3, 9:27 pm)
[PATCH 02/15] sysfs: Support for preventing unmounts., Eric W. Biederman, (Thu Jul 3, 9:07 pm)
[PATCH 03/15] sysfs: sysfs_get_dentry add a sb parameter, Eric W. Biederman, (Thu Jul 3, 9:08 pm)
[PATCH 04/15] sysfs: Implement __sysfs_get_dentry, Eric W. Biederman, (Thu Jul 3, 9:09 pm)
[PATCH 05/15] sysfs: Rename Support multiple superblocks, Eric W. Biederman, (Thu Jul 3, 9:10 pm)
[PATCH 06/15] Introduce sysfs_sd_setattr and fix sysfs_chmod, Eric W. Biederman, (Thu Jul 3, 9:11 pm)
[PATCH 08/15] sysfs: Make sysfs_mount static once again., Eric W. Biederman, (Thu Jul 3, 9:14 pm)
[PATCH 0/8] sysfs namespace support, Eric W. Biederman, (Thu Aug 21, 2:31 am)
[PATCH 1/8] sysfs: Implement sysfs tagged directory support., Eric W. Biederman, (Thu Aug 21, 2:33 am)
Re: [PATCH 1/8] sysfs: Implement sysfs tagged directory supp..., Eric W. Biederman, (Mon Oct 13, 11:20 pm)
[PATCH 2/8] sysfs: Merge sysfs_rename_dir and sysfs_move_dir, Eric W. Biederman, (Thu Aug 21, 2:34 am)
[PATCH 3/8] sysfs: Implement sysfs_delete_link and sysfs_ren..., Eric W. Biederman, (Thu Aug 21, 2:35 am)
[PATCH 4/8] driver core: Implement tagged directory support ..., Eric W. Biederman, (Thu Aug 21, 2:37 am)
[PATCH 5/8] sysfs: Remove sysfs_create_link_nowarn, Eric W. Biederman, (Thu Aug 21, 2:36 am)
[PATCH 6/8] Revert "netns: Fix device renaming for sysfs", Eric W. Biederman, (Thu Aug 21, 2:38 am)
[PATCH 7/8] netns: Enable tagging for net_class directories ..., Eric W. Biederman, (Thu Aug 21, 2:39 am)
[PATCH 8/8] sysfs: user namespaces: fix bug with clone(CLONE..., Eric W. Biederman, (Thu Aug 21, 2:40 am)
Re: [PATCH 0/8] sysfs namespace support, David Miller, (Thu Aug 21, 2:37 am)
Re: [PATCH 09/15] sysfs: Implement sysfs tagged directory su..., Eric W. Biederman, (Wed Aug 20, 2:58 am)
Re: [PATCH 12/15] driver core: Implement tagged directory su..., Eric W. Biederman, (Sun Jul 13, 9:54 pm)
Re: [PATCH 12/15] driver core: Implement tagged directory su..., Eric W. Biederman, (Fri Jul 18, 4:19 pm)
Re: [PATCH 12/15] driver core: Implement tagged directory su..., Eric W. Biederman, (Wed Jul 16, 1:41 am)
Re: [PATCH 12/15] driver core: Implement tagged directory su..., Eric W. Biederman, (Wed Jul 16, 2:32 am)
Re: [PATCH 12/15] driver core: Implement tagged directory su..., Eric W. Biederman, (Wed Jul 16, 5:09 pm)
Re: [PATCH 12/15] driver core: Implement tagged directory su..., Eric W. Biederman, (Wed Jul 16, 3:07 pm)
[PATCH 13/15] Revert "netns: Fix device renaming for sysfs", Eric W. Biederman, (Thu Jul 3, 9:21 pm)