2010-07-09 18:55:48

by Greg KH

[permalink] [raw]
Subject: [PATCH] driver core: remove CONFIG_SYSFS_DEPRECATED

This is no longer needed by any userspace tools, so it's safe to
remove.

Cc: Jens Axboe <[email protected]>
Cc: Stephen Hemminger <[email protected]>
Cc: "Eric W. Biederman" <[email protected]>
Cc: Kay Sievers <[email protected]>
Cc: Alan Stern <[email protected]>
Cc: "James E.J. Bottomley" <[email protected]>
Cc: Andrew Morton <[email protected]>
Cc: Alexey Kuznetsov <[email protected]>
Cc: Randy Dunlap <[email protected]>
Cc: Tejun Heo <[email protected]>
Cc: "David S. Miller" <[email protected]>
Cc: Jaroslav Kysela <[email protected]>
Cc: Takashi Iwai <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: David Howells <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
block/genhd.c | 5 -
drivers/base/bus.c | 22 ------
drivers/base/class.c | 25 -------
drivers/base/core.c | 164 -----------------------------------------------
drivers/scsi/hosts.c | 2
drivers/scsi/scsi_scan.c | 2
fs/partitions/check.c | 6 -
include/sound/core.h | 6 -
init/Kconfig | 36 ----------
sound/core/init.c | 11 ---
10 files changed, 7 insertions(+), 272 deletions(-)

--- a/block/genhd.c
+++ b/block/genhd.c
@@ -22,9 +22,7 @@
#include "blk.h"

static DEFINE_MUTEX(block_class_lock);
-#ifndef CONFIG_SYSFS_DEPRECATED
struct kobject *block_depr;
-#endif

/* for extended dynamic devt allocation, currently only one major is used */
#define MAX_EXT_DEVT (1 << MINORBITS)
@@ -803,10 +801,9 @@ static int __init genhd_device_init(void

register_blkdev(BLOCK_EXT_MAJOR, "blkext");

-#ifndef CONFIG_SYSFS_DEPRECATED
/* create top-level block dir */
block_depr = kobject_create_and_add("block", NULL);
-#endif
+
return 0;
}

--- a/drivers/base/bus.c
+++ b/drivers/base/bus.c
@@ -440,22 +440,6 @@ static void device_remove_attrs(struct b
}
}

-#ifdef CONFIG_SYSFS_DEPRECATED
-static int make_deprecated_bus_links(struct device *dev)
-{
- return sysfs_create_link(&dev->kobj,
- &dev->bus->p->subsys.kobj, "bus");
-}
-
-static void remove_deprecated_bus_links(struct device *dev)
-{
- sysfs_remove_link(&dev->kobj, "bus");
-}
-#else
-static inline int make_deprecated_bus_links(struct device *dev) { return 0; }
-static inline void remove_deprecated_bus_links(struct device *dev) { }
-#endif
-
/**
* bus_add_device - add device to bus
* @dev: device being added
@@ -482,15 +466,10 @@ int bus_add_device(struct device *dev)
&dev->bus->p->subsys.kobj, "subsystem");
if (error)
goto out_subsys;
- error = make_deprecated_bus_links(dev);
- if (error)
- goto out_deprecated;
klist_add_tail(&dev->p->knode_bus, &bus->p->klist_devices);
}
return 0;

-out_deprecated:
- sysfs_remove_link(&dev->kobj, "subsystem");
out_subsys:
sysfs_remove_link(&bus->p->devices_kset->kobj, dev_name(dev));
out_id:
@@ -530,7 +509,6 @@ void bus_remove_device(struct device *de
{
if (dev->bus) {
sysfs_remove_link(&dev->kobj, "subsystem");
- remove_deprecated_bus_links(dev);
sysfs_remove_link(&dev->bus->p->devices_kset->kobj,
dev_name(dev));
device_remove_attrs(dev->bus, dev);
--- a/drivers/base/class.c
+++ b/drivers/base/class.c
@@ -184,13 +184,7 @@ int __class_register(struct class *cls,
if (!cls->dev_kobj)
cls->dev_kobj = sysfs_dev_char_kobj;

-#if defined(CONFIG_SYSFS_DEPRECATED) && defined(CONFIG_BLOCK)
- /* let the block class directory show up in the root of sysfs */
- if (cls != &block_class)
- cp->class_subsys.kobj.kset = class_kset;
-#else
cp->class_subsys.kobj.kset = class_kset;
-#endif
cp->class_subsys.kobj.ktype = &class_ktype;
cp->class = cls;
cls->p = cp;
@@ -276,25 +270,6 @@ void class_destroy(struct class *cls)
class_unregister(cls);
}

-#ifdef CONFIG_SYSFS_DEPRECATED
-char *make_class_name(const char *name, struct kobject *kobj)
-{
- char *class_name;
- int size;
-
- size = strlen(name) + strlen(kobject_name(kobj)) + 2;
-
- class_name = kmalloc(size, GFP_KERNEL);
- if (!class_name)
- return NULL;
-
- strcpy(class_name, name);
- strcat(class_name, ":");
- strcat(class_name, kobject_name(kobj));
- return class_name;
-}
-#endif
-
/**
* class_dev_iter_init - initialize class device iterator
* @iter: class iterator to initialize
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -203,37 +203,6 @@ static int dev_uevent(struct kset *kset,
if (dev->driver)
add_uevent_var(env, "DRIVER=%s", dev->driver->name);

-#ifdef CONFIG_SYSFS_DEPRECATED
- if (dev->class) {
- struct device *parent = dev->parent;
-
- /* find first bus device in parent chain */
- while (parent && !parent->bus)
- parent = parent->parent;
- if (parent && parent->bus) {
- const char *path;
-
- path = kobject_get_path(&parent->kobj, GFP_KERNEL);
- if (path) {
- add_uevent_var(env, "PHYSDEVPATH=%s", path);
- kfree(path);
- }
-
- add_uevent_var(env, "PHYSDEVBUS=%s", parent->bus->name);
-
- if (parent->driver)
- add_uevent_var(env, "PHYSDEVDRIVER=%s",
- parent->driver->name);
- }
- } else if (dev->bus) {
- add_uevent_var(env, "PHYSDEVBUS=%s", dev->bus->name);
-
- if (dev->driver)
- add_uevent_var(env, "PHYSDEVDRIVER=%s",
- dev->driver->name);
- }
-#endif
-
/* have the bus specific function add its stuff */
if (dev->bus && dev->bus->uevent) {
retval = dev->bus->uevent(dev, env);
@@ -578,24 +547,6 @@ void device_initialize(struct device *de
set_dev_node(dev, -1);
}

-#ifdef CONFIG_SYSFS_DEPRECATED
-static struct kobject *get_device_parent(struct device *dev,
- struct device *parent)
-{
- /* class devices without a parent live in /sys/class/<classname>/ */
- if (dev->class && (!parent || parent->class != dev->class))
- return &dev->class->p->class_subsys.kobj;
- /* all other devices keep their parent */
- else if (parent)
- return &parent->kobj;
-
- return NULL;
-}
-
-static inline void cleanup_device_parent(struct device *dev) {}
-static inline void cleanup_glue_dir(struct device *dev,
- struct kobject *glue_dir) {}
-#else
static struct kobject *virtual_device_parent(struct device *dev)
{
static struct kobject *virtual_dir = NULL;
@@ -719,7 +670,6 @@ static void cleanup_device_parent(struct
{
cleanup_glue_dir(dev, dev->kobj.parent);
}
-#endif

static void setup_parent(struct device *dev, struct device *parent)
{
@@ -742,53 +692,6 @@ static int device_add_class_symlinks(str
if (error)
goto out;

-#ifdef CONFIG_SYSFS_DEPRECATED
- /* stacked class devices need a symlink in the class directory */
- if (dev->kobj.parent != &dev->class->p->class_subsys.kobj &&
- device_is_not_partition(dev)) {
- error = sysfs_create_link(&dev->class->p->class_subsys.kobj,
- &dev->kobj, dev_name(dev));
- if (error)
- goto out_subsys;
- }
-
- if (dev->parent && device_is_not_partition(dev)) {
- struct device *parent = dev->parent;
- char *class_name;
-
- /*
- * stacked class devices have the 'device' link
- * pointing to the bus device instead of the parent
- */
- while (parent->class && !parent->bus && parent->parent)
- parent = parent->parent;
-
- error = sysfs_create_link(&dev->kobj,
- &parent->kobj,
- "device");
- if (error)
- goto out_busid;
-
- class_name = make_class_name(dev->class->name,
- &dev->kobj);
- if (class_name)
- error = sysfs_create_link(&dev->parent->kobj,
- &dev->kobj, class_name);
- kfree(class_name);
- if (error)
- goto out_device;
- }
- return 0;
-
-out_device:
- if (dev->parent && device_is_not_partition(dev))
- sysfs_remove_link(&dev->kobj, "device");
-out_busid:
- if (dev->kobj.parent != &dev->class->p->class_subsys.kobj &&
- device_is_not_partition(dev))
- sysfs_delete_link(&dev->class->p->class_subsys.kobj, &dev->kobj,
- dev_name(dev));
-#else
/* link in the class directory pointing to the device */
error = sysfs_create_link(&dev->class->p->class_subsys.kobj,
&dev->kobj, dev_name(dev));
@@ -805,7 +708,6 @@ out_busid:

out_busid:
sysfs_delete_link(&dev->class->p->class_subsys.kobj, &dev->kobj, dev_name(dev));
-#endif

out_subsys:
sysfs_remove_link(&dev->kobj, "subsystem");
@@ -818,29 +720,10 @@ static void device_remove_class_symlinks
if (!dev->class)
return;

-#ifdef CONFIG_SYSFS_DEPRECATED
- if (dev->parent && device_is_not_partition(dev)) {
- char *class_name;
-
- class_name = make_class_name(dev->class->name, &dev->kobj);
- if (class_name) {
- sysfs_remove_link(&dev->parent->kobj, class_name);
- kfree(class_name);
- }
- sysfs_remove_link(&dev->kobj, "device");
- }
-
- if (dev->kobj.parent != &dev->class->p->class_subsys.kobj &&
- device_is_not_partition(dev))
- sysfs_delete_link(&dev->class->p->class_subsys.kobj, &dev->kobj,
- dev_name(dev));
-#else
if (dev->parent && device_is_not_partition(dev))
sysfs_remove_link(&dev->kobj, "device");

sysfs_delete_link(&dev->class->p->class_subsys.kobj, &dev->kobj, dev_name(dev));
-#endif
-
sysfs_remove_link(&dev->kobj, "subsystem");
}

@@ -1613,41 +1496,23 @@ int device_rename(struct device *dev, ch
pr_debug("device: '%s': %s: renaming to '%s'\n", dev_name(dev),
__func__, new_name);

-#ifdef CONFIG_SYSFS_DEPRECATED
- if ((dev->class) && (dev->parent))
- old_class_name = make_class_name(dev->class->name, &dev->kobj);
-#endif
-
old_device_name = kstrdup(dev_name(dev), GFP_KERNEL);
if (!old_device_name) {
error = -ENOMEM;
goto out;
}

-#ifndef CONFIG_SYSFS_DEPRECATED
if (dev->class) {
error = sysfs_rename_link(&dev->class->p->class_subsys.kobj,
&dev->kobj, old_device_name, new_name);
if (error)
goto out;
}
-#endif
+
error = kobject_rename(&dev->kobj, new_name);
if (error)
goto out;

-#ifdef CONFIG_SYSFS_DEPRECATED
- if (old_class_name) {
- new_class_name = make_class_name(dev->class->name, &dev->kobj);
- if (new_class_name) {
- error = sysfs_rename_link(&dev->parent->kobj,
- &dev->kobj,
- old_class_name,
- new_class_name);
- }
- }
-#endif
-
out:
put_device(dev);

@@ -1664,40 +1529,13 @@ static int device_move_class_links(struc
struct device *new_parent)
{
int error = 0;
-#ifdef CONFIG_SYSFS_DEPRECATED
- char *class_name;

- class_name = make_class_name(dev->class->name, &dev->kobj);
- if (!class_name) {
- error = -ENOMEM;
- goto out;
- }
- if (old_parent) {
- sysfs_remove_link(&dev->kobj, "device");
- sysfs_remove_link(&old_parent->kobj, class_name);
- }
- if (new_parent) {
- error = sysfs_create_link(&dev->kobj, &new_parent->kobj,
- "device");
- if (error)
- goto out;
- error = sysfs_create_link(&new_parent->kobj, &dev->kobj,
- class_name);
- if (error)
- sysfs_remove_link(&dev->kobj, "device");
- } else
- error = 0;
-out:
- kfree(class_name);
- return error;
-#else
if (old_parent)
sysfs_remove_link(&dev->kobj, "device");
if (new_parent)
error = sysfs_create_link(&dev->kobj, &new_parent->kobj,
"device");
return error;
-#endif
}

/**
--- a/drivers/scsi/hosts.c
+++ b/drivers/scsi/hosts.c
@@ -406,9 +406,7 @@ struct Scsi_Host *scsi_host_alloc(struct

device_initialize(&shost->shost_gendev);
dev_set_name(&shost->shost_gendev, "host%d", shost->host_no);
-#ifndef CONFIG_SYSFS_DEPRECATED
shost->shost_gendev.bus = &scsi_bus_type;
-#endif
shost->shost_gendev.type = &scsi_host_type;

device_initialize(&shost->shost_dev);
--- a/drivers/scsi/scsi_scan.c
+++ b/drivers/scsi/scsi_scan.c
@@ -417,9 +417,7 @@ static struct scsi_target *scsi_alloc_ta
starget->reap_ref = 1;
dev->parent = get_device(parent);
dev_set_name(dev, "target%d:%d:%d", shost->host_no, channel, id);
-#ifndef CONFIG_SYSFS_DEPRECATED
dev->bus = &scsi_bus_type;
-#endif
dev->type = &scsi_target_type;
starget->id = id;
starget->channel = channel;
--- a/fs/partitions/check.c
+++ b/fs/partitions/check.c
@@ -500,14 +500,14 @@ void register_disk(struct gendisk *disk)

if (device_add(ddev))
return;
-#ifndef CONFIG_SYSFS_DEPRECATED
+
err = sysfs_create_link(block_depr, &ddev->kobj,
kobject_name(&ddev->kobj));
if (err) {
device_del(ddev);
return;
}
-#endif
+
disk->part0.holder_dir = kobject_create_and_add("holders", &ddev->kobj);
disk->slave_dir = kobject_create_and_add("slaves", &ddev->kobj);

@@ -724,8 +724,6 @@ void del_gendisk(struct gendisk *disk)
kobject_put(disk->part0.holder_dir);
kobject_put(disk->slave_dir);
disk->driverfs_dev = NULL;
-#ifndef CONFIG_SYSFS_DEPRECATED
sysfs_remove_link(block_depr, dev_name(disk_to_dev(disk)));
-#endif
device_del(disk_to_dev(disk));
}
--- a/include/sound/core.h
+++ b/include/sound/core.h
@@ -133,9 +133,7 @@ struct snd_card {
int free_on_last_close; /* free in context of file_release */
wait_queue_head_t shutdown_sleep;
struct device *dev; /* device assigned to this card */
-#ifndef CONFIG_SYSFS_DEPRECATED
struct device *card_dev; /* cardX object for sysfs */
-#endif

#ifdef CONFIG_PM
unsigned int power_state; /* power state */
@@ -196,11 +194,7 @@ struct snd_minor {
/* return a device pointer linked to each sound device as a parent */
static inline struct device *snd_card_get_device_link(struct snd_card *card)
{
-#ifdef CONFIG_SYSFS_DEPRECATED
- return card ? card->dev : NULL;
-#else
return card ? card->card_dev : NULL;
-#endif
}

/* sound.c */
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -651,42 +651,6 @@ endif # CGROUPS
config MM_OWNER
bool

-config SYSFS_DEPRECATED
- bool
-
-config SYSFS_DEPRECATED_V2
- bool "enable deprecated sysfs features to support old userspace tools"
- depends on SYSFS
- default n
- select SYSFS_DEPRECATED
- help
- This option switches the layout of sysfs to the deprecated
- version. Do not use it on recent distributions.
-
- The current sysfs layout features a unified device tree at
- /sys/devices/, which is able to express a hierarchy between
- class devices. If the deprecated option is set to Y, the
- unified device tree is split into a bus device tree at
- /sys/devices/ and several individual class device trees at
- /sys/class/. The class and bus devices will be connected by
- "<subsystem>:<name>" and the "device" links. The "block"
- class devices, will not show up in /sys/class/block/. Some
- subsystems will suppress the creation of some devices which
- depend on the unified device tree.
-
- This option is not a pure compatibility option that can
- be safely enabled on newer distributions. It will change the
- layout of sysfs to the non-extensible deprecated version,
- and disable some features, which can not be exported without
- confusing older userspace tools. Since 2007/2008 all major
- distributions do not enable this option, and ship no tools which
- depend on the deprecated layout or this option.
-
- If you are using a new kernel on an older distribution, or use
- older userspace tools, you might need to say Y here. Do not say Y,
- if the original kernel, that came with your distribution, has
- this option set to N.
-
config RELAY
bool "Kernel->user space relay support (formerly relayfs)"
help
--- a/sound/core/init.c
+++ b/sound/core/init.c
@@ -395,12 +395,10 @@ int snd_card_disconnect(struct snd_card
snd_printk(KERN_ERR "not all devices for card %i can be disconnected\n", card->number);

snd_info_card_disconnect(card);
-#ifndef CONFIG_SYSFS_DEPRECATED
if (card->card_dev) {
device_unregister(card->card_dev);
card->card_dev = NULL;
}
-#endif
#ifdef CONFIG_PM
wake_up(&card->power_sleep);
#endif
@@ -573,7 +571,6 @@ void snd_card_set_id(struct snd_card *ca
}
EXPORT_SYMBOL(snd_card_set_id);

-#ifndef CONFIG_SYSFS_DEPRECATED
static ssize_t
card_id_show_attr(struct device *dev,
struct device_attribute *attr, char *buf)
@@ -630,7 +627,6 @@ card_number_show_attr(struct device *dev

static struct device_attribute card_number_attrs =
__ATTR(number, S_IRUGO, card_number_show_attr, NULL);
-#endif /* CONFIG_SYSFS_DEPRECATED */

/**
* snd_card_register - register the soundcard
@@ -649,7 +645,7 @@ int snd_card_register(struct snd_card *c

if (snd_BUG_ON(!card))
return -EINVAL;
-#ifndef CONFIG_SYSFS_DEPRECATED
+
if (!card->card_dev) {
card->card_dev = device_create(sound_class, card->dev,
MKDEV(0, 0), card,
@@ -657,7 +653,7 @@ int snd_card_register(struct snd_card *c
if (IS_ERR(card->card_dev))
card->card_dev = NULL;
}
-#endif
+
if ((err = snd_device_register_all(card)) < 0)
return err;
mutex_lock(&snd_card_mutex);
@@ -674,7 +670,6 @@ int snd_card_register(struct snd_card *c
if (snd_mixer_oss_notify_callback)
snd_mixer_oss_notify_callback(card, SND_MIXER_OSS_NOTIFY_REGISTER);
#endif
-#ifndef CONFIG_SYSFS_DEPRECATED
if (card->card_dev) {
err = device_create_file(card->card_dev, &card_id_attrs);
if (err < 0)
@@ -683,7 +678,7 @@ int snd_card_register(struct snd_card *c
if (err < 0)
return err;
}
-#endif
+
return 0;
}


2010-07-14 23:40:25

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH] driver core: remove CONFIG_SYSFS_DEPRECATED

On Fri, 9 Jul 2010 11:54:50 -0700
Greg Kroah-Hartman <[email protected]> wrote:

> This is no longer needed by any userspace tools, so it's safe to
> remove.

Makes my FC6 test box not boot - can't find /dev/root. Then when I go
back to plain old mainline (2.6.35-rc5) and run `make oldconfig', the
.config change sticks:

@@ -106,8 +106,7 @@
CONFIG_LOG_BUF_SHIFT=17
CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
# CONFIG_CGROUPS is not set
-CONFIG_SYSFS_DEPRECATED=y
-CONFIG_SYSFS_DEPRECATED_V2=y
+# CONFIG_SYSFS_DEPRECATED_V2 is not set
CONFIG_RELAY=y
CONFIG_NAMESPACES=y
# CONFIG_UTS_NS is not set

and the box still won't boot.

2010-07-15 00:24:21

by Dave Airlie

[permalink] [raw]
Subject: Re: [alsa-devel] [PATCH] driver core: remove CONFIG_SYSFS_DEPRECATED

On Thu, Jul 15, 2010 at 9:38 AM, Andrew Morton
<[email protected]> wrote:
> On Fri, 9 Jul 2010 11:54:50 -0700
> Greg Kroah-Hartman <[email protected]> wrote:
>
>> This is no longer needed by any userspace tools, so it's safe to
>> remove.

Also still used for booting mainline kernels on RHEL5 userspaces.

Live with your mistakes guys, don't try and bury them.

Dave.

2010-07-15 00:41:09

by Eric W. Biederman

[permalink] [raw]
Subject: Re: [PATCH] driver core: remove CONFIG_SYSFS_DEPRECATED

Andrew Morton <[email protected]> writes:

> On Fri, 9 Jul 2010 11:54:50 -0700
> Greg Kroah-Hartman <[email protected]> wrote:
>
>> This is no longer needed by any userspace tools, so it's safe to
>> remove.
>
> Makes my FC6 test box not boot - can't find /dev/root. Then when I go
> back to plain old mainline (2.6.35-rc5) and run `make oldconfig', the
> .config change sticks:
>
> @@ -106,8 +106,7 @@
> CONFIG_LOG_BUF_SHIFT=17
> CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
> # CONFIG_CGROUPS is not set
> -CONFIG_SYSFS_DEPRECATED=y
> -CONFIG_SYSFS_DEPRECATED_V2=y
> +# CONFIG_SYSFS_DEPRECATED_V2 is not set
> CONFIG_RELAY=y
> CONFIG_NAMESPACES=y
> # CONFIG_UTS_NS is not set
>
> and the box still won't boot.

The reason FC6 doesn't boot is there is a userspace tool
I believe in the initrd that cares about symlinks when it should
not.

What is more interesting is that currently there is a bug in
2.6.35-rc5 where rmmod <netdriver> modprobe <netdriver> will in fact
fail. There was an inadvertent regression and no one has noticed or
complained. I spotted it by code review just a little bit ago and I
haven't had a chance to write and test the fix yet.

If the code is going to start bitrotting and no one is going to
notice or care simply removing the code instead of subjecting users
to weird unexpected breakage seems like a responsible thing to do.

Eric

2010-07-15 04:15:57

by Greg KH

[permalink] [raw]
Subject: Re: [PATCH] driver core: remove CONFIG_SYSFS_DEPRECATED

On Wed, Jul 14, 2010 at 05:40:27PM -0700, Eric W. Biederman wrote:
> Andrew Morton <[email protected]> writes:
>
> > On Fri, 9 Jul 2010 11:54:50 -0700
> > Greg Kroah-Hartman <[email protected]> wrote:
> >
> >> This is no longer needed by any userspace tools, so it's safe to
> >> remove.
> >
> > Makes my FC6 test box not boot - can't find /dev/root. Then when I go
> > back to plain old mainline (2.6.35-rc5) and run `make oldconfig', the
> > .config change sticks:
> >
> > @@ -106,8 +106,7 @@
> > CONFIG_LOG_BUF_SHIFT=17
> > CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
> > # CONFIG_CGROUPS is not set
> > -CONFIG_SYSFS_DEPRECATED=y
> > -CONFIG_SYSFS_DEPRECATED_V2=y
> > +# CONFIG_SYSFS_DEPRECATED_V2 is not set
> > CONFIG_RELAY=y
> > CONFIG_NAMESPACES=y
> > # CONFIG_UTS_NS is not set
> >
> > and the box still won't boot.
>
> The reason FC6 doesn't boot is there is a userspace tool
> I believe in the initrd that cares about symlinks when it should
> not.

Anyone happen to know which tool it is? I remember we had had issues
with FC3 around this area, but I thought we resolved them, so it's
supprising to me that FC6 has issues.

> What is more interesting is that currently there is a bug in
> 2.6.35-rc5 where rmmod <netdriver> modprobe <netdriver> will in fact
> fail. There was an inadvertent regression and no one has noticed or
> complained. I spotted it by code review just a little bit ago and I
> haven't had a chance to write and test the fix yet.
>
> If the code is going to start bitrotting and no one is going to
> notice or care simply removing the code instead of subjecting users
> to weird unexpected breakage seems like a responsible thing to do.

Yeah, that's what prompted this removal. After the s390 guys said that
they were all good to go, I figured no one else would have problems with
it :)

If it turns out there still are issues with older userspaces like FC6
that we can't resolve, I have no problem dropping this patch and then we
will have to fix up the regression.

thanks,

greg k-h

2010-07-15 04:15:55

by Greg KH

[permalink] [raw]
Subject: Re: [PATCH] driver core: remove CONFIG_SYSFS_DEPRECATED

On Wed, Jul 14, 2010 at 04:38:52PM -0700, Andrew Morton wrote:
> On Fri, 9 Jul 2010 11:54:50 -0700
> Greg Kroah-Hartman <[email protected]> wrote:
>
> > This is no longer needed by any userspace tools, so it's safe to
> > remove.
>
> Makes my FC6 test box not boot - can't find /dev/root. Then when I go
> back to plain old mainline (2.6.35-rc5) and run `make oldconfig', the
> .config change sticks:
>
> @@ -106,8 +106,7 @@
> CONFIG_LOG_BUF_SHIFT=17
> CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
> # CONFIG_CGROUPS is not set
> -CONFIG_SYSFS_DEPRECATED=y
> -CONFIG_SYSFS_DEPRECATED_V2=y
> +# CONFIG_SYSFS_DEPRECATED_V2 is not set
> CONFIG_RELAY=y
> CONFIG_NAMESPACES=y
> # CONFIG_UTS_NS is not set
>
> and the box still won't boot.

Ick, that sucks.

What kernel was FC6 based on originally?

Kay, I thought that Fedora had fixed the "can't find root" issue for
this type of sysfs configuation a long time ago. Or was that something
else for PPC that I am thinking of?

thanks,

greg k-h

2010-07-15 04:16:19

by Greg KH

[permalink] [raw]
Subject: Re: [alsa-devel] [PATCH] driver core: remove CONFIG_SYSFS_DEPRECATED

On Thu, Jul 15, 2010 at 10:24:18AM +1000, Dave Airlie wrote:
> On Thu, Jul 15, 2010 at 9:38 AM, Andrew Morton
> <[email protected]> wrote:
> > On Fri, 9 Jul 2010 11:54:50 -0700
> > Greg Kroah-Hartman <[email protected]> wrote:
> >
> >> This is no longer needed by any userspace tools, so it's safe to
> >> remove.
>
> Also still used for booting mainline kernels on RHEL5 userspaces.

Really? I thought that was fixed a long time ago. What kernel was
RHEL5 originally based on?

And note that no RHEL5 user is going to be using a .36 kernel on their
system, that's a completely unsupported and unadvised situation. Heck,
I'd be amazed if a .34 kernel.org kernel boots on the thing, does it?

> Live with your mistakes guys, don't try and bury them.

I'm not, I honestly thought that we had resolved these issues.

So, which version of Centos matches up with RHEL5 so I can go download
it and see if I can resolve this? We might just be able to reduce the
ammount of code we remove here and keep the Kconfig option around, if
that old userspace is expecting a portion of the symlinks to still be
present.

thanks,

greg k-h

2010-07-15 04:30:15

by Eric W. Biederman

[permalink] [raw]
Subject: Re: [PATCH] driver core: remove CONFIG_SYSFS_DEPRECATED

Greg KH <[email protected]> writes:

> On Wed, Jul 14, 2010 at 05:40:27PM -0700, Eric W. Biederman wrote:
>> Andrew Morton <[email protected]> writes:
>>
>> > On Fri, 9 Jul 2010 11:54:50 -0700
>> > Greg Kroah-Hartman <[email protected]> wrote:
>> >
>> >> This is no longer needed by any userspace tools, so it's safe to
>> >> remove.
>> >
>> > Makes my FC6 test box not boot - can't find /dev/root. Then when I go
>> > back to plain old mainline (2.6.35-rc5) and run `make oldconfig', the
>> > .config change sticks:
>> >
>> > @@ -106,8 +106,7 @@
>> > CONFIG_LOG_BUF_SHIFT=17
>> > CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
>> > # CONFIG_CGROUPS is not set
>> > -CONFIG_SYSFS_DEPRECATED=y
>> > -CONFIG_SYSFS_DEPRECATED_V2=y
>> > +# CONFIG_SYSFS_DEPRECATED_V2 is not set
>> > CONFIG_RELAY=y
>> > CONFIG_NAMESPACES=y
>> > # CONFIG_UTS_NS is not set
>> >
>> > and the box still won't boot.
>>
>> The reason FC6 doesn't boot is there is a userspace tool
>> I believe in the initrd that cares about symlinks when it should
>> not.
>
> Anyone happen to know which tool it is? I remember we had had issues
> with FC3 around this area, but I thought we resolved them, so it's
> supprising to me that FC6 has issues.

It was something in the initrd, that didn't like the symlinks. It
has been a year or more since I looked at it. At that point I just
enabled SYSFS_DEPRECATED and moved on.

>> What is more interesting is that currently there is a bug in
>> 2.6.35-rc5 where rmmod <netdriver> modprobe <netdriver> will in fact
>> fail. There was an inadvertent regression and no one has noticed or
>> complained. I spotted it by code review just a little bit ago and I
>> haven't had a chance to write and test the fix yet.
>>
>> If the code is going to start bitrotting and no one is going to
>> notice or care simply removing the code instead of subjecting users
>> to weird unexpected breakage seems like a responsible thing to do.
>
> Yeah, that's what prompted this removal. After the s390 guys said that
> they were all good to go, I figured no one else would have problems with
> it :)
>
> If it turns out there still are issues with older userspaces like FC6
> that we can't resolve, I have no problem dropping this patch and then we
> will have to fix up the regression.

I still have to test it but it looks like a one liner. Actually two lines
now that I have to fix the error in symlink creation as well.

Eric

2010-07-15 04:43:26

by Greg KH

[permalink] [raw]
Subject: Re: [PATCH] driver core: remove CONFIG_SYSFS_DEPRECATED

On Wed, Jul 14, 2010 at 09:29:53PM -0700, Eric W. Biederman wrote:
> Greg KH <[email protected]> writes:
>
> > On Wed, Jul 14, 2010 at 05:40:27PM -0700, Eric W. Biederman wrote:
> >> Andrew Morton <[email protected]> writes:
> >>
> >> > On Fri, 9 Jul 2010 11:54:50 -0700
> >> > Greg Kroah-Hartman <[email protected]> wrote:
> >> >
> >> >> This is no longer needed by any userspace tools, so it's safe to
> >> >> remove.
> >> >
> >> > Makes my FC6 test box not boot - can't find /dev/root. Then when I go
> >> > back to plain old mainline (2.6.35-rc5) and run `make oldconfig', the
> >> > .config change sticks:
> >> >
> >> > @@ -106,8 +106,7 @@
> >> > CONFIG_LOG_BUF_SHIFT=17
> >> > CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
> >> > # CONFIG_CGROUPS is not set
> >> > -CONFIG_SYSFS_DEPRECATED=y
> >> > -CONFIG_SYSFS_DEPRECATED_V2=y
> >> > +# CONFIG_SYSFS_DEPRECATED_V2 is not set
> >> > CONFIG_RELAY=y
> >> > CONFIG_NAMESPACES=y
> >> > # CONFIG_UTS_NS is not set
> >> >
> >> > and the box still won't boot.
> >>
> >> The reason FC6 doesn't boot is there is a userspace tool
> >> I believe in the initrd that cares about symlinks when it should
> >> not.
> >
> > Anyone happen to know which tool it is? I remember we had had issues
> > with FC3 around this area, but I thought we resolved them, so it's
> > supprising to me that FC6 has issues.
>
> It was something in the initrd, that didn't like the symlinks. It
> has been a year or more since I looked at it. At that point I just
> enabled SYSFS_DEPRECATED and moved on.

If it was just the symlinks for the block devices, we might be able to
reduce the amount of code hanging around. When I return from Europe
next week, I'll try to dig into this.

> >> What is more interesting is that currently there is a bug in
> >> 2.6.35-rc5 where rmmod <netdriver> modprobe <netdriver> will in fact
> >> fail. There was an inadvertent regression and no one has noticed or
> >> complained. I spotted it by code review just a little bit ago and I
> >> haven't had a chance to write and test the fix yet.
> >>
> >> If the code is going to start bitrotting and no one is going to
> >> notice or care simply removing the code instead of subjecting users
> >> to weird unexpected breakage seems like a responsible thing to do.
> >
> > Yeah, that's what prompted this removal. After the s390 guys said that
> > they were all good to go, I figured no one else would have problems with
> > it :)
> >
> > If it turns out there still are issues with older userspaces like FC6
> > that we can't resolve, I have no problem dropping this patch and then we
> > will have to fix up the regression.
>
> I still have to test it but it looks like a one liner. Actually two lines
> now that I have to fix the error in symlink creation as well.

Ah, that's good to hear, as I'm sure .35 will need this fix :)

thanks,

greg k-h

2010-07-15 05:00:41

by Dave Airlie

[permalink] [raw]
Subject: Re: [alsa-devel] [PATCH] driver core: remove CONFIG_SYSFS_DEPRECATED

On Thu, Jul 15, 2010 at 2:14 PM, Greg KH <[email protected]> wrote:
> On Thu, Jul 15, 2010 at 10:24:18AM +1000, Dave Airlie wrote:
>> On Thu, Jul 15, 2010 at 9:38 AM, Andrew Morton
>> <[email protected]> wrote:
>> > On Fri, 9 Jul 2010 11:54:50 -0700
>> > Greg Kroah-Hartman <[email protected]> wrote:
>> >
>> >> This is no longer needed by any userspace tools, so it's safe to
>> >> remove.
>>
>> Also still used for booting mainline kernels on RHEL5 userspaces.
>
> Really? ?I thought that was fixed a long time ago. ?What kernel was
> RHEL5 originally based on?
>
> And note that no RHEL5 user is going to be using a .36 kernel on their
> system, that's a completely unsupported and unadvised situation. ?Heck,
> I'd be amazed if a .34 kernel.org kernel boots on the thing, does it?
>

I think some people do it internally, last time I did it was to test
something I was backporting, so you want to make sure the upstream
version boots and the backported version also boots on the same
hw/userspace.

original kernel was 2.6.18.

Dave.

2010-07-15 06:29:10

by Greg KH

[permalink] [raw]
Subject: Re: [alsa-devel] [PATCH] driver core: remove CONFIG_SYSFS_DEPRECATED

On Thu, Jul 15, 2010 at 03:00:31PM +1000, Dave Airlie wrote:
> On Thu, Jul 15, 2010 at 2:14 PM, Greg KH <[email protected]> wrote:
> > On Thu, Jul 15, 2010 at 10:24:18AM +1000, Dave Airlie wrote:
> >> On Thu, Jul 15, 2010 at 9:38 AM, Andrew Morton
> >> <[email protected]> wrote:
> >> > On Fri, 9 Jul 2010 11:54:50 -0700
> >> > Greg Kroah-Hartman <[email protected]> wrote:
> >> >
> >> >> This is no longer needed by any userspace tools, so it's safe to
> >> >> remove.
> >>
> >> Also still used for booting mainline kernels on RHEL5 userspaces.
> >
> > Really? ?I thought that was fixed a long time ago. ?What kernel was
> > RHEL5 originally based on?
> >
> > And note that no RHEL5 user is going to be using a .36 kernel on their
> > system, that's a completely unsupported and unadvised situation. ?Heck,
> > I'd be amazed if a .34 kernel.org kernel boots on the thing, does it?
> >
>
> I think some people do it internally, last time I did it was to test
> something I was backporting, so you want to make sure the upstream
> version boots and the backported version also boots on the same
> hw/userspace.
>
> original kernel was 2.6.18.

Yes, that was the number, but does it really look anything like a .18
kernel.org release? :)

I'll test this out next week.

thanks,

greg k-h

2010-07-15 06:32:50

by Dave Airlie

[permalink] [raw]
Subject: Re: [alsa-devel] [PATCH] driver core: remove CONFIG_SYSFS_DEPRECATED

On Thu, Jul 15, 2010 at 3:35 PM, Greg KH <[email protected]> wrote:
> On Thu, Jul 15, 2010 at 03:00:31PM +1000, Dave Airlie wrote:
>> On Thu, Jul 15, 2010 at 2:14 PM, Greg KH <[email protected]> wrote:
>> > On Thu, Jul 15, 2010 at 10:24:18AM +1000, Dave Airlie wrote:
>> >> On Thu, Jul 15, 2010 at 9:38 AM, Andrew Morton
>> >> <[email protected]> wrote:
>> >> > On Fri, 9 Jul 2010 11:54:50 -0700
>> >> > Greg Kroah-Hartman <[email protected]> wrote:
>> >> >
>> >> >> This is no longer needed by any userspace tools, so it's safe to
>> >> >> remove.
>> >>
>> >> Also still used for booting mainline kernels on RHEL5 userspaces.
>> >
>> > Really? ?I thought that was fixed a long time ago. ?What kernel was
>> > RHEL5 originally based on?
>> >
>> > And note that no RHEL5 user is going to be using a .36 kernel on their
>> > system, that's a completely unsupported and unadvised situation. ?Heck,
>> > I'd be amazed if a .34 kernel.org kernel boots on the thing, does it?
>> >
>>
>> I think some people do it internally, last time I did it was to test
>> something I was backporting, so you want to make sure the upstream
>> version boots and the backported version also boots on the same
>> hw/userspace.
>>
>> original kernel was 2.6.18.
>
> Yes, that was the number, but does it really look anything like a .18
> kernel.org release? ?:)
>

Well its more that the userspace is mostly what was released at the
same time, we aren't going to update udev/mkinitrd unless some major
problem was discovered.

Dave.

2010-07-15 07:55:40

by Greg KH

[permalink] [raw]
Subject: Re: [alsa-devel] [PATCH] driver core: remove CONFIG_SYSFS_DEPRECATED

On Thu, Jul 15, 2010 at 04:32:46PM +1000, Dave Airlie wrote:
> On Thu, Jul 15, 2010 at 3:35 PM, Greg KH <[email protected]> wrote:
> > On Thu, Jul 15, 2010 at 03:00:31PM +1000, Dave Airlie wrote:
> >> On Thu, Jul 15, 2010 at 2:14 PM, Greg KH <[email protected]> wrote:
> >> > On Thu, Jul 15, 2010 at 10:24:18AM +1000, Dave Airlie wrote:
> >> >> On Thu, Jul 15, 2010 at 9:38 AM, Andrew Morton
> >> >> <[email protected]> wrote:
> >> >> > On Fri, 9 Jul 2010 11:54:50 -0700
> >> >> > Greg Kroah-Hartman <[email protected]> wrote:
> >> >> >
> >> >> >> This is no longer needed by any userspace tools, so it's safe to
> >> >> >> remove.
> >> >>
> >> >> Also still used for booting mainline kernels on RHEL5 userspaces.
> >> >
> >> > Really? ?I thought that was fixed a long time ago. ?What kernel was
> >> > RHEL5 originally based on?
> >> >
> >> > And note that no RHEL5 user is going to be using a .36 kernel on their
> >> > system, that's a completely unsupported and unadvised situation. ?Heck,
> >> > I'd be amazed if a .34 kernel.org kernel boots on the thing, does it?
> >> >
> >>
> >> I think some people do it internally, last time I did it was to test
> >> something I was backporting, so you want to make sure the upstream
> >> version boots and the backported version also boots on the same
> >> hw/userspace.
> >>
> >> original kernel was 2.6.18.
> >
> > Yes, that was the number, but does it really look anything like a .18
> > kernel.org release? ?:)
> >
>
> Well its more that the userspace is mostly what was released at the
> same time, we aren't going to update udev/mkinitrd unless some major
> problem was discovered.

That's fine, I can provide an updated package for those looney users
that want to run this type of system :)

But ideally, I can figure out what is being needed and possibly reduce
the footprint that is currently covered by this config option.

thanks,

greg k-h

2010-07-15 08:31:40

by Kay Sievers

[permalink] [raw]
Subject: Re: [PATCH] driver core: remove CONFIG_SYSFS_DEPRECATED

On Thu, Jul 15, 2010 at 05:52, Greg KH <[email protected]> wrote:
> On Wed, Jul 14, 2010 at 04:38:52PM -0700, Andrew Morton wrote:

>> and the box still won't boot.
>
> Ick, that sucks.
>
> What kernel was FC6 based on originally?
>
> Kay, I thought that Fedora had fixed the "can't find root" issue for
> this type of sysfs configuation a long time ago.  Or was that something
> else for PPC that I am thinking of?

It was fixed, and it's weird bug in nash.

If Andrew is still doing the same thing as years ago, he does not
update the initramfs image, he boots with the old original initramfs
along with the new kernel. :)

It might be, that just dropping the entire initramfs, and let the
kernel mount the rootfs, has a good chance to boot the box.

Kay

2010-07-15 08:37:38

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH] driver core: remove CONFIG_SYSFS_DEPRECATED

On Thu, 15 Jul 2010 10:31:15 +0200 Kay Sievers <[email protected]> wrote:

> On Thu, Jul 15, 2010 at 05:52, Greg KH <[email protected]> wrote:
> > On Wed, Jul 14, 2010 at 04:38:52PM -0700, Andrew Morton wrote:
>
> >> and the box still won't boot.
> >
> > Ick, that sucks.
> >
> > What kernel was FC6 based on originally?
> >
> > Kay, I thought that Fedora had fixed the "can't find root" issue for
> > this type of sysfs configuation a long time ago. __Or was that something
> > else for PPC that I am thinking of?
>
> It was fixed, and it's weird bug in nash.
>
> If Andrew is still doing the same thing as years ago, he does not
> update the initramfs image, he boots with the old original initramfs
> along with the new kernel. :)

I run

VERS=$(make kernelrelease 2>/dev/null)
<copy vmlinux>
/sbin/new-kernel-pkg --mkinitrd --install

2010-07-15 08:52:04

by Kay Sievers

[permalink] [raw]
Subject: Re: [PATCH] driver core: remove CONFIG_SYSFS_DEPRECATED

On Thu, Jul 15, 2010 at 10:36, Andrew Morton <[email protected]> wrote:
> On Thu, 15 Jul 2010 10:31:15 +0200 Kay Sievers <[email protected]> wrote:
>
>> On Thu, Jul 15, 2010 at 05:52, Greg KH <[email protected]> wrote:
>> > On Wed, Jul 14, 2010 at 04:38:52PM -0700, Andrew Morton wrote:
>>
>> >> and the box still won't boot.
>> >
>> > Ick, that sucks.
>> >
>> > What kernel was FC6 based on originally?
>> >
>> > Kay, I thought that Fedora had fixed the "can't find root" issue for
>> > this type of sysfs configuation a long time ago. __Or was that something
>> > else for PPC that I am thinking of?
>>
>> It was fixed, and it's weird bug in nash.
>>
>> If Andrew is still doing the same thing as years ago, he does not
>> update the initramfs image, he boots with the old original initramfs
>> along with the new kernel. :)
>
> I run
>
>        VERS=$(make kernelrelease 2>/dev/null)
>        <copy vmlinux>
>        /sbin/new-kernel-pkg --mkinitrd --install

Ah, I see.

It might be, that the fix only hit FC7, or Andrew did not install the
updates. The original mail about the nash problem is here:
http://lkml.org/lkml/2007/6/7/209

Kay

2010-07-15 13:47:44

by Konrad Rzeszutek Wilk

[permalink] [raw]
Subject: Re: [PATCH] driver core: remove CONFIG_SYSFS_DEPRECATED


> > and the box still won't boot.
>
> The reason FC6 doesn't boot is there is a userspace tool
> I believe in the initrd that cares about symlinks when it should
> not.

It is not just nash. Also multipathd would fail (as it expects
the /sys/scsi_host/..<something> in certain directories), and 'lsscsi'. There
might be other tools that depend on libsysfs to be affected by this as well.

Oh, and I think 'udev' might have some trouble too - but not 100% certain
about that.

2010-07-15 14:27:00

by Greg KH

[permalink] [raw]
Subject: Re: [PATCH] driver core: remove CONFIG_SYSFS_DEPRECATED

On Thu, Jul 15, 2010 at 09:29:01AM -0400, Konrad Rzeszutek Wilk wrote:
>
> > > and the box still won't boot.
> >
> > The reason FC6 doesn't boot is there is a userspace tool
> > I believe in the initrd that cares about symlinks when it should
> > not.
>
> It is not just nash. Also multipathd would fail (as it expects
> the /sys/scsi_host/..<something> in certain directories), and 'lsscsi'. There
> might be other tools that depend on libsysfs to be affected by this as well.

No tool should use libsysfs, that code broke a _long_ time ago. Do you
know of anything using it?

> Oh, and I think 'udev' might have some trouble too - but not 100% certain
> about that.

Heh, no udev works just fine :)

So basically, it's just the block links that are being affected, so that
might let me narrow down the code covered by the depreciated option.

thanks,

greg k-h

2010-07-15 16:33:53

by Douglas Gilbert

[permalink] [raw]
Subject: Re: [PATCH] driver core: remove CONFIG_SYSFS_DEPRECATED

On 10-07-15 09:29 AM, Konrad Rzeszutek Wilk wrote:
>
>>> and the box still won't boot.
>>
>> The reason FC6 doesn't boot is there is a userspace tool
>> I believe in the initrd that cares about symlinks when it should
>> not.
>
> It is not just nash. Also multipathd would fail (as it expects
> the /sys/scsi_host/..<something> in certain directories), and 'lsscsi'. There
> might be other tools that depend on libsysfs to be affected by this as well.

lsscsi has been "CONFIG_SYSFS_DEPRECATED_V2" tolerant
since version 0.21 released 20080710. The current
version is 0.23 released 20091201 which will soon
be displaced by 0.24 to cope with the most recent
breakages.

Writing a user space tool that relies on sysfs structure
and contents, stable over the whole lk 2.6 series, is
impossible. For a history of my pain with lsscsi see
its ChangeLog.


Happily most of my tools are based on an ioctl! SG_IO
was a suggestion from Joerg Schilling and has now found
its way into most block devices. Now it has a new lease
of life in the bsg driver.

Doug Gilbert

2010-07-15 17:01:50

by Greg KH

[permalink] [raw]
Subject: Re: [PATCH] driver core: remove CONFIG_SYSFS_DEPRECATED

On Thu, Jul 15, 2010 at 12:24:33PM -0400, Douglas Gilbert wrote:
> On 10-07-15 09:29 AM, Konrad Rzeszutek Wilk wrote:
>>
>>>> and the box still won't boot.
>>>
>>> The reason FC6 doesn't boot is there is a userspace tool
>>> I believe in the initrd that cares about symlinks when it should
>>> not.
>>
>> It is not just nash. Also multipathd would fail (as it expects
>> the /sys/scsi_host/..<something> in certain directories), and 'lsscsi'. There
>> might be other tools that depend on libsysfs to be affected by this as well.
>
> lsscsi has been "CONFIG_SYSFS_DEPRECATED_V2" tolerant
> since version 0.21 released 20080710. The current
> version is 0.23 released 20091201 which will soon
> be displaced by 0.24 to cope with the most recent
> breakages.
>
> Writing a user space tool that relies on sysfs structure
> and contents, stable over the whole lk 2.6 series, is
> impossible. For a history of my pain with lsscsi see
> its ChangeLog.

Yeah, I'd recommend using libudev for any new tools if you want to
interact with sysfs. It's much easier than mucking around with it
directly and will be future-proof as udev can handle a lot of changes to
sysfs that other tools might not realize.

thanks,

greg k-h

2010-07-23 12:39:53

by Greg KH

[permalink] [raw]
Subject: Re: [PATCH] driver core: remove CONFIG_SYSFS_DEPRECATED

On Wed, Jul 14, 2010 at 04:38:52PM -0700, Andrew Morton wrote:
> On Fri, 9 Jul 2010 11:54:50 -0700
> Greg Kroah-Hartman <[email protected]> wrote:
>
> > This is no longer needed by any userspace tools, so it's safe to
> > remove.
>
> Makes my FC6 test box not boot - can't find /dev/root. Then when I go
> back to plain old mainline (2.6.35-rc5) and run `make oldconfig', the
> .config change sticks:
>
> @@ -106,8 +106,7 @@
> CONFIG_LOG_BUF_SHIFT=17
> CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
> # CONFIG_CGROUPS is not set
> -CONFIG_SYSFS_DEPRECATED=y
> -CONFIG_SYSFS_DEPRECATED_V2=y
> +# CONFIG_SYSFS_DEPRECATED_V2 is not set
> CONFIG_RELAY=y
> CONFIG_NAMESPACES=y
> # CONFIG_UTS_NS is not set
>
> and the box still won't boot.

Ok, for now, I've removed this patch from my tree, so you should not
have any problem.

I'll go work on this later next week when I have some more time.

thanks,

greg k-h