OpenVZ Forum - RDF feed
type: channel
items: [PATCH 0/10] sysfs network namespace support
items: [PATCH 01/10] sysfs: Make sysfs_mount static again.
items: [PATCH 02/10] sysfs: Support for preventing unmounts.
items: [PATCH 03/10] sysfs: sysfs_get_dentry add a sb parameter
items: [PATCH 04/10] sysfs: Implement __sysfs_get_dentry
items: [PATCH 05/10] sysfs: Rename Support multiple superblocks
items: [PATCH 06/10] sysfs: sysfs_chmod_file handle multiple superblocks
items: [PATCH 07/10] sysfs: Implement sysfs tagged directory support.
items: [PATCH 08/10] sysfs: Implement sysfs_delete_link and sysfs_rename_link
items: [PATCH 09/10] driver core: Implement tagged directory support for device classes.
items: namespace support requires network modules to say "GPL"
items: Re: namespace support requires network modules to say "GPL"
items: Re: [PATCH 0/10] sysfs network namespace support

[PATCH 0/10] sysfs network namespace support
type: item
description: Now that we have network namespace support merged it is time to revisit the sysfs support so we can remove the dependency on !SYSFS. I'm not even trying to base this on any of Tejun's very interesting work on sysfs to remove the coupling between kobjects and sysfs_dirents. For my objective that just means I would need to spend several more weeks staring at sysfs trying to figure out how to get where I am going and iterating several times from yet another new starting place. I want to get something working before I try for anymore perfection. I don't expect the userspace side of this to ever change which is close enough to perfect for me. The bulk of the patches are the changes to allow multiple sysfs superblocks. Then comes the tagged directory sysfs support which uses information captured at mount time to decide which object with which tag will appear in a directory. Then the support for renaming and deleting objects where the source may be ambiguous because of tagging. Then finally the network namespace support so it is clear how all of this tied together. Greg the last patch that enables tagged directory support seems to make most sense living in your tree, as it lives half in fs/sysfs/mount.c, and half in net/core/net-sysfs.c and all of it's dependencies are in Linus tree except for this patchset. Eric _______________________________________________ Containers mailing list Containers@lists.linux-foundation.org https://lists.linux-foundation.org/mailman/listinfo/containers
creator: ebiederm
date: 2007-12-01T09:06:58-00:00

[PATCH 01/10] sysfs: Make sysfs_mount static again.
type: item
description: In preparation for supporting multiple mounts of sysfs I need to remove all assumptions that we have a single mount of sysfs. So this patch modifies sysfs_open_file to use the vfsmount from the struct file instead of fibbing and using the global vfsmount. We get a little more noise this way but we should continue to get the useful part of the debugging information. This was the reason I made sysfs_mount static earlier. Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> --- fs/sysfs/file.c | 2 +- fs/sysfs/mount.c | 2 +- fs/sysfs/sysfs.h | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/fs/sysfs/file.c b/fs/sysfs/file.c index 87e4a0e..ad13151 100644 --- a/fs/sysfs/file.c +++ b/fs/sysfs/file.c @@ -330,7 +330,7 @@ static int sysfs_open_file(struct inode *inode, struct file *file) int error = -EACCES; char *p; - p = d_path(file->f_dentry, sysfs_mount, last_sysfs_file, + p = d_path(file->f_dentry, file->f_vfsmnt, last_sysfs_file, sizeof(last_sysfs_file)); if (p) memmove(last_sysfs_file, p, strlen(p) + 1); diff --git a/fs/sysfs/mount.c b/fs/sysfs/mount.c index a3410d6..7416826 100644 --- a/fs/sysfs/mount.c +++ b/fs/sysfs/mount.c @@ -22,7 +22,7 @@ /* Random magic number */ #define SYSFS_MAGIC 0x62656572 -struct vfsmount *sysfs_mount; +static struct vfsmount *sysfs_mount; struct super_block * sysfs_sb = NULL; struct kmem_cache *sysfs_dir_cachep; diff --git a/fs/sysfs/sysfs.h b/fs/sysfs/sysfs.h index 52aaa8c..ff17f8d 100644 --- a/fs/sysfs/sysfs.h +++ b/fs/sysfs/sysfs.h @@ -91,7 +91,6 @@ struct sysfs_addrm_cxt { extern struct sysfs_dirent sysfs_root; extern struct super_block *sysfs_sb; extern struct kmem_cache *sysfs_dir_cachep; -extern struct vfsmount *sysfs_mount; /* * dir.c -- 1.5.3.rc6.17.g1911 _______________________________________________ Containers mailing list Containers@lists.linux-foundation.org https://lists.linux-foundation.org/mailman/listinfo/containers
creator: ebiederm
date: 2007-12-01T09:12:27-00:00

[PATCH 02/10] sysfs: Support for preventing unmounts.
type: item
description: To support mounting multiple instances of sysfs occassionally I need to walk through all of the currently present sysfs super blocks. To allow this iteration this patch adds sysfs_grab_supers and sysfs_release_supers. While a piece of code is in a section surrounded by these no more sysfs super blocks will be either created or destroyed. Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> --- fs/sysfs/mount.c | 79 ++++++++++++++++++++++++++++++++++++++++++++++++----- fs/sysfs/sysfs.h | 10 +++++++ 2 files changed, 81 insertions(+), 8 deletions(-) diff --git a/fs/sysfs/mount.c b/fs/sysfs/mount.c index 7416826..ef5f7ae 100644 --- a/fs/sysfs/mount.c +++ b/fs/sysfs/mount.c @@ -41,47 +41,110 @@ struct sysfs_dirent sysfs_root = { static int sysfs_fill_super(struct super_block *sb, void *data, int silent) { - struct inode *inode; - struct dentry *root; + struct sysfs_super_info *info = NULL; + struct inode *inode = NULL; + struct dentry *root = NULL; + int error; sb->s_blocksize = PAGE_CACHE_SIZE; sb->s_blocksize_bits = PAGE_CACHE_SHIFT; sb->s_magic = SYSFS_MAGIC; sb->s_op = &sysfs_ops; sb->s_time_gran = 1; - sysfs_sb = sb; + if (!sysfs_sb) + sysfs_sb = sb; + + error = -ENOMEM; + info = kzalloc(sizeof(*info), GFP_KERNEL); + if (!info) + goto out_err; /* get root inode, initialize and unlock it */ + error = -ENOMEM; inode = sysfs_get_inode(&sysfs_root); if (!inode) { pr_debug("sysfs: could not get root inode\n"); - return -ENOMEM; + goto out_err; } /* instantiate and link root dentry */ + error = -ENOMEM; root = d_alloc_root(inode); if (!root) { pr_debug("%s: could not get root dentry!\n",__FUNCTION__); - iput(inode); - return -ENOMEM; + goto out_err; } root->d_fsdata = &sysfs_root; sb->s_root = root; + sb->s_fs_info = info; return 0; + +out_err: + dput(root); + iput(inode); + kfree(info); + if (sysfs_sb == sb) + sysfs_sb = NULL; + return error; } static int sysfs_get_sb(struct file_system_type *fs_type, int flags, const char *dev_name, void *data, struct vfsmount *mnt)…
creator: ebiederm
date: 2007-12-01T09:13:59-00:00

[PATCH 03/10] sysfs: sysfs_get_dentry add a sb parameter
type: item
description: In preparation for multiple mounts of sysfs add a superblock parameter to sysfs_get_dentry. Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> --- fs/sysfs/dir.c | 11 ++++++----- fs/sysfs/file.c | 2 +- fs/sysfs/sysfs.h | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c index 3371629..cff2b12 100644 --- a/fs/sysfs/dir.c +++ b/fs/sysfs/dir.c @@ -84,6 +84,7 @@ static void sysfs_unlink_sibling(struct sysfs_dirent *sd) /** * sysfs_get_dentry - get dentry for the given sysfs_dirent + * @sb: superblock of the dentry to return * @sd: sysfs_dirent of interest * * Get dentry for @sd. Dentry is looked up if currently not @@ -96,9 +97,9 @@ static void sysfs_unlink_sibling(struct sysfs_dirent *sd) * RETURNS: * Pointer to found dentry on success, ERR_PTR() value on error. */ -struct dentry *sysfs_get_dentry(struct sysfs_dirent *sd) +struct dentry *sysfs_get_dentry(struct super_block *sb, struct sysfs_dirent *sd) { - struct dentry *dentry = dget(sysfs_sb->s_root); + struct dentry *dentry = dget(sb->s_root); while (dentry->d_fsdata != sd) { struct sysfs_dirent *cur; @@ -778,7 +779,7 @@ int sysfs_rename_dir(struct kobject * kobj, const char *new_name) goto out; /* nothing to rename */ /* get the original dentry */ - old_dentry = sysfs_get_dentry(sd); + old_dentry = sysfs_get_dentry(sysfs_sb, sd); if (IS_ERR(old_dentry)) { error = PTR_ERR(old_dentry); goto out; @@ -845,14 +846,14 @@ int sysfs_move_dir(struct kobject *kobj, struct kobject *new_parent_kobj) goto out; /* nothing to move */ /* get dentries */ - old_dentry = sysfs_get_dentry(sd); + old_dentry = sysfs_get_dentry(sysfs_sb, sd); if (IS_ERR(old_dentry)) { error = PTR_ERR(old_dentry); goto out; } old_parent = old_dentry->d_parent; - new_parent = sysfs_get_dentry(new_parent_sd); + new_parent = sysfs_get_dentry(sysfs_sb, new_parent_sd); if (IS_ERR(new_parent)) { error = PTR_ERR(new_parent); goto out; diff --git a/fs/sysfs/file.c b/fs/sysfs/file.c index ad13151..8c7bba0 1006…
creator: ebiederm
date: 2007-12-01T09:16:47-00:00

[PATCH 04/10] sysfs: Implement __sysfs_get_dentry
type: item
description: This function is similar but much simpler to sysfs_get_dentry returns a sysfs dentry if one curently exists. This requires less locking the sysfs_get_dentry and which makes it preferable in some contexts. Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> --- fs/sysfs/dir.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 files changed, 38 insertions(+), 0 deletions(-) diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c index cff2b12..3ec9040 100644 --- a/fs/sysfs/dir.c +++ b/fs/sysfs/dir.c @@ -764,6 +764,44 @@ void sysfs_remove_dir(struct kobject * kobj) __sysfs_remove_dir(sd); } +/** + * __sysfs_get_dentry - get dentry for the given sysfs_dirent + * @sb: superblock of the dentry to return + * @sd: sysfs_dirent of interest + * + * Get dentry for @sd. Only return a dentry if one currently + * exists. + * + * LOCKING: + * Kernel thread context (may sleep) + * + * RETURNS: + * Pointer to found dentry on success, NULL on failure. + */ +static struct dentry *__sysfs_get_dentry(struct super_block *sb, struct sysfs_dirent *sd) +{ + struct inode *inode; + struct dentry *dentry = NULL; + + inode = ilookup5_nowait(sysfs_sb, sd->s_ino, sysfs_ilookup_test, sd); + if (inode && !(inode->i_state & I_NEW)) { + struct dentry *alias; + spin_lock(&dcache_lock); + list_for_each_entry(alias, &inode->i_dentry, d_alias) { + if (!IS_ROOT(alias) && d_unhashed(alias)) + continue; + if (alias->d_sb != sb) + continue; + dentry = alias; + dget_locked(dentry); + break; + } + spin_unlock(&dcache_lock); + } + iput(inode); + return dentry; +} + int sysfs_rename_dir(struct kobject * kobj, const char *new_name) { struct sysfs_dirent *sd = kobj->sd; -- 1.5.3.rc6.17.g1911 _______________________________________________ Containers mailing list Containers@lists.linux-foundation.org https://lists.linux-foundation.org/mailman/listinfo/containers
creator: ebiederm
date: 2007-12-01T09:18:55-00:00

[PATCH 05/10] sysfs: Rename Support multiple superblocks
type: item
description: This patch modifies the sysfs_rename_dir and sysfs_move_dir to support multiple sysfs dentry trees rooted in different sysfs superblocks. Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> --- fs/sysfs/dir.c | 190 +++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 135 insertions(+), 55 deletions(-) diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c index 3ec9040..0d0c87e 100644 --- a/fs/sysfs/dir.c +++ b/fs/sysfs/dir.c @@ -802,42 +802,112 @@ static struct dentry *__sysfs_get_dentry(struct super_block *sb, struct sysfs_di return dentry; } +struct sysfs_rename_struct { + struct list_head list; + struct dentry *old_dentry; + struct dentry *new_dentry; + struct dentry *old_parent; + struct dentry *new_parent; +}; + +static void post_rename(struct list_head *head) +{ + struct sysfs_rename_struct *srs; + while (!list_empty(head)) { + srs = list_entry(head->next, struct sysfs_rename_struct, list); + dput(srs->old_dentry); + dput(srs->new_dentry); + dput(srs->old_parent); + dput(srs->new_parent); + list_del(&srs->list); + kfree(srs); + } +} + +static int prep_rename(struct list_head *head, + struct sysfs_dirent *sd, struct sysfs_dirent *new_parent_sd, + const char *name) +{ + struct sysfs_rename_struct *srs; + struct super_block *sb; + struct dentry *dentry; + int error; + + list_for_each_entry(sb, &sysfs_fs_type.fs_supers, s_instances) { + dentry = sysfs_get_dentry(sb, sd); + if (dentry == ERR_PTR(-EXDEV)) + continue; + if (IS_ERR(dentry)) { + error = PTR_ERR(dentry); + goto err_out; + } + + srs = kzalloc(sizeof(*srs), GFP_KERNEL); + if (!srs) { + dput(dentry); + goto err_out; + } + + INIT_LIST_HEAD(&srs->list); + list_add(head, &srs->list); + srs->old_dentry = dentry; + srs->old_parent = dget(dentry->d_parent); + + dentry = sysfs_get_dentry(sb, new_parent_sd); + if (IS_ERR(dentry)) { + error = PTR_ERR(dentry); + goto err_out; + } + srs->new_parent = dentry; + + error = -ENOMEM; + dentry = d_alloc_name(srs->new_parent, name); + if (!dentry) + goto err…
creator: ebiederm
date: 2007-12-01T09:23:24-00:00

[PATCH 06/10] sysfs: sysfs_chmod_file handle multiple superblocks
type: item
description: Teach sysfs_chmod_file how to handle multiple sysfs superblocks. Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> --- fs/sysfs/file.c | 51 ++++++++++++++++++++++++++++----------------------- 1 files changed, 28 insertions(+), 23 deletions(-) diff --git a/fs/sysfs/file.c b/fs/sysfs/file.c index 8c7bba0..ade6140 100644 --- a/fs/sysfs/file.c +++ b/fs/sysfs/file.c @@ -558,7 +558,8 @@ EXPORT_SYMBOL_GPL(sysfs_add_file_to_group); int sysfs_chmod_file(struct kobject *kobj, struct attribute *attr, mode_t mode) { struct sysfs_dirent *victim_sd = NULL; - struct dentry *victim = NULL; + struct super_block *sb; + struct dentry *victim; struct inode * inode; struct iattr newattrs; int rc; @@ -569,31 +570,35 @@ int sysfs_chmod_file(struct kobject *kobj, struct attribute *attr, mode_t mode) goto out; mutex_lock(&sysfs_rename_mutex); - victim = sysfs_get_dentry(sysfs_sb, victim_sd); - mutex_unlock(&sysfs_rename_mutex); - if (IS_ERR(victim)) { - rc = PTR_ERR(victim); - victim = NULL; - goto out; - } - - inode = victim->d_inode; - - mutex_lock(&inode->i_mutex); + sysfs_grab_supers(); + list_for_each_entry(sb, &sysfs_fs_type.fs_supers, s_instances) { + victim = sysfs_get_dentry(sb, victim_sd); + if (victim == ERR_PTR(-EXDEV)) + continue; + if (IS_ERR(victim)) { + rc = PTR_ERR(victim); + victim = NULL; + goto out_unlock; + } - newattrs.ia_mode = (mode & S_IALLUGO) | (inode->i_mode & ~S_IALLUGO); - newattrs.ia_valid = ATTR_MODE | ATTR_CTIME; - rc = notify_change(victim, &newattrs); + inode = victim->d_inode; + mutex_lock(&inode->i_mutex); + newattrs.ia_mode = (mode & S_IALLUGO) | (inode->i_mode & ~S_IALLUGO); + newattrs.ia_valid = ATTR_MODE | ATTR_CTIME; + rc = notify_change(victim, &newattrs); + if (rc == 0) { + mutex_lock(&sysfs_mutex); + victim_sd->s_mode = newattrs.ia_mode; + mutex_unlock(&sysfs_mutex); + } + mutex_unlock(&inode->i_mutex); - if (rc == 0) { - mutex_lock(&sysfs_mutex); - victim_sd->s_mode = newattrs.ia_mode; - mutex_unlock(&sysfs_mutex); + dput(victim); } - - m…
creator: ebiederm
date: 2007-12-01T09:25:44-00:00

[PATCH 07/10] sysfs: Implement sysfs tagged directory support.
type: item
description: The problem. When implementing a network namespace I need to be able to have multiple network devices with the same name. Currently this is a problem for /sys/class/net/*, /sys/devices/virtual/net/*, and potentially a few other directories of the form /sys/ ... /net/*. What this patch does is to add an additional tag field to the sysfs dirent structure. For directories that should show different contents depending on the context such as /sys/class/net/, and /sys/devices/virtual/net/ this tag field is used to specify the context in which those directories should be visible. Effectively this is the same as creating multiple distinct directories with the same name the internally to sysfs the result is nicer. I am calling the concept of a single directory that looks like multiple directories all at the same path in the filesystem tagged directories. For the networking namespace the set of directories whose contents I need to filter with tags can depend on the presence or absence of hotplug hardware or which modules are currently loaded. Which means I need a simple race free way to setup those directories as tagged. To achieve a race free design all tagged directories are created and managed by sysfs itself. The upper level code that knows what tagged directories we need provides just two methods that enable this: sb_tag() - that returns a "void *" tag that identifies the context of the process that mounted sysfs. kobject_tag(kobj) - that returns a "void *" tag that identifies the context a kobject should be in. Everything else is left up to sysfs. For the network namespace sb_tag and kobject_tag are essentially one line functions, and look to remain that. The work needed in sysfs is more extensive. At each directory or symlink creating I need to check if the directory it is being created in is a tagged directory and if so generate the appropriate tag to place on the sysfs_dirent. Likewise at each symlink or directory removal I need to check if the sysfs directory it is …
creator: ebiederm
date: 2007-12-01T09:28:51-00:00

[PATCH 08/10] sysfs: Implement sysfs_delete_link and sysfs_rename_link
type: item
description: When removing a symlink sysfs_remove_link does not provide enough information to figure out which tagged directory the symlink falls in. So I need sysfs_delete_link which is passed the target of the symlink to delete. Further half the time when we are removing a symlink the code is actually renaming the symlink but not doing so explicitly because we don't have a symlink rename method. So I have added sysfs_rename_link as well. Both of these functions now have enough information to find a symlink in a tagged directory. The only restriction is that they must be called before the target kobject is renamed or deleted. If they are called later I loose track of which tag the target kobject was marked with and can no longer find the old symlink to remove it. Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> --- fs/sysfs/symlink.c | 31 +++++++++++++++++++++++++++++++ include/linux/sysfs.h | 17 +++++++++++++++++ 2 files changed, 48 insertions(+), 0 deletions(-) diff --git a/fs/sysfs/symlink.c b/fs/sysfs/symlink.c index b0f8070..89c98cb 100644 --- a/fs/sysfs/symlink.c +++ b/fs/sysfs/symlink.c @@ -80,6 +80,21 @@ int sysfs_create_link(struct kobject * kobj, struct kobject * target, const char } /** + * sysfs_delete_link - remove symlink in object's directory. + * @kobj: object we're acting for. + * @targ: object we're pointing to. + * @name: name of the symlink to remove. + * + * Unlike sysfs_remove_link sysfs_delete_link has enough information + * to successfully delete symlinks in tagged directories. + */ +void sysfs_delete_link(struct kobject *kobj, struct kobject *targ, + const char *name) +{ + sysfs_hash_and_remove(targ, kobj->sd, name); +} + +/** * sysfs_remove_link - remove symlink in object's directory. * @kobj: object we're acting for. * @name: name of the symlink to remove. @@ -90,6 +105,22 @@ void sysfs_remove_link(struct kobject * kobj, const char * name) sysfs_hash_and_remove(kobj, kobj->sd, name); } +/** + * sysfs_rename_link - rename symlink in object's di…
creator: ebiederm
date: 2007-12-01T09:30:52-00:00

[PATCH 09/10] driver core: Implement tagged directory support for device classes.
type: item
description: This patch enables tagging on every class directory if struct class has tag_ops. In addition device_del and device_rename were modified to use sysfs_delete_link and sysfs_rename_link respectively to ensure when these operations happen on devices whose classes have tag_ops that they work properly. Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> --- drivers/base/class.c | 30 ++++++++++++++++++++++++--- drivers/base/core.c | 51 +++++++++++++++++++++++++---------------------- include/linux/device.h | 2 + 3 files changed, 55 insertions(+), 28 deletions(-) diff --git a/drivers/base/class.c b/drivers/base/class.c index c4f8843..ed9393d 100644 --- a/drivers/base/class.c +++ b/drivers/base/class.c @@ -135,6 +135,17 @@ static void remove_class_attrs(struct class * cls) } } +static int class_setup_tagging(struct class *cls) +{ + const struct sysfs_tagged_dir_operations *tag_ops; + + tag_ops = cls->tag_ops; + if (!tag_ops) + return 0; + + return sysfs_enable_tagging(&cls->subsys.kobj, tag_ops); +} + int class_register(struct class * cls) { int error; @@ -160,11 +171,22 @@ int class_register(struct class * cls) cls->subsys.kobj.ktype = &class_ktype; error = kset_register(&cls->subsys); - if (!error) { - error = add_class_attrs(class_get(cls)); - class_put(cls); - } + if (error) + goto out; + + error = class_setup_tagging(cls); + if (error) + goto out_unregister; + + error = add_class_attrs(cls); + if (error) + goto out_unregister; + +out: return error; +out_unregister: + kset_unregister(&cls->subsys); + goto out; } void class_unregister(struct class * cls) diff --git a/drivers/base/core.c b/drivers/base/core.c index a2c3d4e..f9d3fcf 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -600,16 +600,20 @@ static struct kobject *get_device_parent(struct device *dev, return kobj; /* or create a new class-directory at the parent device */ - k = kobject_create(dev->class->name, parent_kobj); - if (!k) +bser kobj = kobject_create(dev->class->name, parent_kobj); + if (…
creator: ebiederm
date: 2007-12-01T09:33:11-00:00

namespace support requires network modules to say "GPL"
type: item
description: > Now that we have network namespace support merged it is time to > revisit the sysfs support so we can remove the dependency on !SYSFS. ... Now that the namespace updates are part of 2.6.24, there is a major inconsistency in network EXPORT_SYMBOLs. It used to be that an external network module could get away without having to add a MODULE_LICENSE("GPL*") line to the source. In support of that, common networking functions (still) use EXPORT_SYMBOL() rather than the more restrictive EXPORT_SYMBOL_GPL(). Eg. register_netdev(), sk_alloc(), __dev_get_by_name(). But now, none of those three are actually usable by default, because they all require "init_net", which is EXPORT_SYMBOL_GPL(). So.. It appears that one of three things should really happen next: 1) Change the other exports to also be EXPORT_SYMBOL_GPL. 2) Have register_netdev, sk_alloc, and __dev_get_by_name default to using init_net when NULL is specified in the namespace field. or 3) Change init_net to be EXPORT_SYMBOL_GPL. Right now, things are just a bit inconsistent, and it's not clear whether the namespace changes intended this consequence or not. Cheers (as for me, I think all kernel modules are GPL, whether they have the MODULE_LICENSE line or not, so flames to /dev/null on that). _______________________________________________ Containers mailing list Containers@lists.linux-foundation.org https://lists.linux-foundation.org/mailman/listinfo/containers
creator: Mark Lord
date: 2007-12-01T13:10:17-00:00

Re: namespace support requires network modules to say "GPL"
type: item
description: > You license yours under the GPL, so they should respect the GPL. > > It sounds like we're back to where we were years ago. Didn't we already > agree that EXPORT_SYMBOL_GPL was *NOT* a GPL-enforcement mechanism and had > nothing to do with respecting the GPL? After all, if it s a GPL-enforcement No we seem to be back recycling the fact that certain people were making statements that might be construed, unanswered, as giving permission to violate the GPL. I'm merely reminding people that I've not waived my GPL rights, I've not said modules are somehow magically OK, and I don't agree with Linus. The GPL very clearly says that you can make your own unredistributed modifications and keep them that way. Alan _______________________________________________ Containers mailing list Containers@lists.linux-foundation.org https://lists.linux-foundation.org/mailman/listinfo/containers
creator: Alan Cox
date: 2007-12-03T00:14:41-00:00

Re: namespace support requires network modules to say "GPL"
type: item
description: On Mon, 03 Dec 2007 09:24:15 +0100 Romano Giannetti <romanol@upcomillas.es> wrote: > > > On Sat, 2007-12-01 at 22:34 -0500, Mark Lord wrote: > > Stephen Hemminger wrote:. > > >> > > > I spoke too soon earlier, ndiswrapper builds and loads against > > > current 2.6.24-rc3. Vmware and proprietary VPN software probably > > > do not. Once again I don't give a damn, but the enterprise distro > > > vendors certainly care. > > ... > > > > Naw, enterprise (or any other) distro vendors shouldn't have any > > issues here, since they can just patch their kernels around any > > issues. > > Please pardon me for jumping in; > > What I think is that every time VMware or (worst) ndiswrapper breaks, if you had read the thread... ndiswrapper doesn't break, and vmware driver had some bugs that, once fixed, no no longer break either.... -- If you want to reach me at my work email, use arjan@linux.intel.com For development, discussion and tips for power savings, visit http://www.lesswatts.org _______________________________________________ Containers mailing list Containers@lists.linux-foundation.org https://lists.linux-foundation.org/mailman/listinfo/containers
creator: Arjan van de Ven
date: 2007-12-03T15:34:39-00:00

Re: namespace support requires network modules to say "GPL"
type: item
description: Romano Giannetti <romanol@upcomillas.es> writes: > Please pardon me for jumping in; I am not a kernel developer, but I try > to help with debugging whenever I can (and it's not just hand-waving, I > helped to track down a couple of nasty bugs on MMC or ACPI EC, > recently). And I am an engineer and IANAL, so I wouldn't speak about > laws here. But I think it's not just a distribution's problem. > > Unfortunately, I need VMware and ndiswrapper to get work done with my > laptop. It's not the perfect world, but the only alternative is to boot > in XP. So I normally stick with vendors kernels and, when I have time to > "play" with new kernel, I go for it. If ndiswrapper and VMware work, > perfect, I can test extensively the new kernel; if I find problems, I > *know* I have to restart without proprietary modules, try to reproduce, > report back. I did it a lot of times. > > What I think is that every time VMware or (worst) ndiswrapper breaks, > the kernel loose an awful lot of testers. In the span of time before > Giri and the VMware team post a patch (-rc1 and -rc4, tipically), my > testing activity is just occasional. And I guess a lot of people is in > the same situation. > > These are just my 2cents. I will continue to test new kernels every time > I can, and to use native solutions as often as I can (go, ath5k, go!; > and LabWindows/CVI for Linux, anyone?). But maybe a bit of tolerance can > help everyone... As a kernel developer let me say thank you for doing what testing you can. I think a bit of tolerance for others can help the conversation. At the same time since out of tree modules (even GPL'd ones) have not chosen to play with us we have to move forward as best we can without their input. It isn't possible to do anything else. Right now I have made some changes for good technical reasons, and some out of tree modules have broken. Regardless of the flavor of EXPORT_SYMBOL they would have broken. Based on my experience with in-tree code and the few glimpses I h…
creator: ebiederm
date: 2007-12-03T18:03:38-00:00

Re: namespace support requires network modules to say "GPL"
type: item
description: From: ebiederm@xmission.com (Eric W. Biederman) Date: Mon, 03 Dec 2007 11:03:38 -0700 > Based on my experience with in-tree code and the few glimpses I > have gotten of out of tree code the reason the out of tree code broke > is because it is doing very questionable things. Calling dev_get_by_foo() was never ever a very questionable thing. Stop saying bullshit, because that's all that is coming out of your mouth in this thread. The fact is, these modules called perfectly fine interfaces and by adding namespaces YOU BROKE THEM. That by itself is OK, they can make the code changes to adapt and use the init namespace. Enforcing new licensing restrictions on them for existing interfaces just because you add a new freaking argument that is practically speaking a constant and always the same right now, on the other hand, IS NOT FINE and you must fix this now. I don't care how you do it. If you don't want them to get at the init namespace symbol, fine, revert all the dev_get_by_*() interfaces to not take the namespace symbol and make them internally use the init namespace albeit invisibly to the caller. Then you make all the existing call sites invoke new dev_get_by_*_ns() interfaces that take an explicit argument. But only do this where it is truly necessary, everything uses the init namespace practically speaking and it's clearer if you conver to the *_ns() variant when the code itself is converted. _______________________________________________ Containers mailing list Containers@lists.linux-foundation.org https://lists.linux-foundation.org/mailman/listinfo/containers
creator: davem
date: 2007-12-03T18:13:46-00:00

Re: [PATCH 0/10] sysfs network namespace support
type: item
description: On Sat, Dec 01, 2007 at 02:06:58AM -0700, Eric W. Biederman wrote: > > Now that we have network namespace support merged it is time to > revisit the sysfs support so we can remove the dependency on !SYSFS. <snip> Oops, I forgot to apply this to my tree. Eric, you still want this submitted, right? thanks, greg k-h _______________________________________________ Containers mailing list Containers@lists.linux-foundation.org https://lists.linux-foundation.org/mailman/listinfo/containers
creator: Greg KH
date: 2007-12-21T03:07:32-00:00

Re: [PATCH 0/10] sysfs network namespace support
type: item
description: Greg KH <greg@kroah.com> writes: > On Sat, Dec 01, 2007 at 02:06:58AM -0700, Eric W. Biederman wrote: >> >> Now that we have network namespace support merged it is time to >> revisit the sysfs support so we can remove the dependency on !SYSFS. > > <snip> > > Oops, I forgot to apply this to my tree. Eric, you still want this > submitted, right? Yes. I'm am just about to head out of town to visit my parents over Christmas. So I'm not going to be very responsive until I after the New Year. Eric _______________________________________________ Containers mailing list Containers@lists.linux-foundation.org https://lists.linux-foundation.org/mailman/listinfo/containers
creator: ebiederm
date: 2007-12-21T13:04:43-00:00