About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Documentation / filesystems / sysfs-tagging.txt




Custom Search

Based on kernel version 3.15.4. Page generated on 2014-07-07 09:03 EST.

1	Sysfs tagging
2	-------------
3	
4	(Taken almost verbatim from Eric Biederman's netns tagging patch
5	commit msg)
6	
7	The problem.  Network devices show up in sysfs and with the network
8	namespace active multiple devices with the same name can show up in
9	the same directory, ouch!
10	
11	To avoid that problem and allow existing applications in network
12	namespaces to see the same interface that is currently presented in
13	sysfs, sysfs now has tagging directory support.
14	
15	By using the network namespace pointers as tags to separate out the
16	the sysfs directory entries we ensure that we don't have conflicts
17	in the directories and applications only see a limited set of
18	the network devices.
19	
20	Each sysfs directory entry may be tagged with zero or one
21	namespaces.  A sysfs_dirent is augmented with a void *s_ns.  If a
22	directory entry is tagged, then sysfs_dirent->s_flags will have a
23	flag between KOBJ_NS_TYPE_NONE and KOBJ_NS_TYPES, and s_ns will
24	point to the namespace to which it belongs.
25	
26	Each sysfs superblock's sysfs_super_info contains an array void
27	*ns[KOBJ_NS_TYPES].  When a task in a tagging namespace
28	kobj_nstype first mounts sysfs, a new superblock is created.  It
29	will be differentiated from other sysfs mounts by having its
30	s_fs_info->ns[kobj_nstype] set to the new namespace.  Note that
31	through bind mounting and mounts propagation, a task can easily view
32	the contents of other namespaces' sysfs mounts.  Therefore, when a
33	namespace exits, it will call kobj_ns_exit() to invalidate any
34	sysfs_dirent->s_ns pointers pointing to it.
35	
36	Users of this interface:
37	- define a type in the kobj_ns_type enumeration.
38	- call kobj_ns_type_register() with its kobj_ns_type_operations which has
39	  - current_ns() which returns current's namespace
40	  - netlink_ns() which returns a socket's namespace
41	  - initial_ns() which returns the initial namesapce
42	- call kobj_ns_exit() when an individual tag is no longer valid
Hide Line Numbers
About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Information is copyright its respective author. All material is available from the Linux Kernel Source distributed under a GPL License. This page is provided as a free service by mjmwired.net.