Driver core: Fix up build when CONFIG_BLOCK=N
This fixes up the driver core build errors when CONFIG_BLOCK=N Thanks to Alexander van Heukelum <heukelum@mailshack.com> for the basis of this patch, and to Jeremy Fitzhardinge <jeremy@goop.org> for reporting the problem. Cc: Alexander van Heukelum <heukelum@mailshack.com> Cc: Jeremy Fitzhardinge <jeremy@goop.org> Cc: Kay Sievers <kay.sievers@vrfy.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
@@ -149,7 +149,7 @@ int class_register(struct class *cls)
|
|||||||
if (error)
|
if (error)
|
||||||
return error;
|
return error;
|
||||||
|
|
||||||
#ifdef CONFIG_SYSFS_DEPRECATED
|
#if defined(CONFIG_SYSFS_DEPRECATED) && defined(CONFIG_BLOCK)
|
||||||
/* let the block class directory show up in the root of sysfs */
|
/* let the block class directory show up in the root of sysfs */
|
||||||
if (cls != &block_class)
|
if (cls != &block_class)
|
||||||
cls->subsys.kobj.kset = class_kset;
|
cls->subsys.kobj.kset = class_kset;
|
||||||
|
@@ -27,9 +27,17 @@
|
|||||||
int (*platform_notify)(struct device *dev) = NULL;
|
int (*platform_notify)(struct device *dev) = NULL;
|
||||||
int (*platform_notify_remove)(struct device *dev) = NULL;
|
int (*platform_notify_remove)(struct device *dev) = NULL;
|
||||||
|
|
||||||
/*
|
#ifdef CONFIG_BLOCK
|
||||||
* sysfs bindings for devices.
|
static inline int device_is_not_partition(struct device *dev)
|
||||||
*/
|
{
|
||||||
|
return !(dev->type == &part_type);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static inline int device_is_not_partition(struct device *dev)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* dev_driver_string - Return a device's driver name, if at all possible
|
* dev_driver_string - Return a device's driver name, if at all possible
|
||||||
@@ -652,14 +660,14 @@ static int device_add_class_symlinks(struct device *dev)
|
|||||||
#ifdef CONFIG_SYSFS_DEPRECATED
|
#ifdef CONFIG_SYSFS_DEPRECATED
|
||||||
/* stacked class devices need a symlink in the class directory */
|
/* stacked class devices need a symlink in the class directory */
|
||||||
if (dev->kobj.parent != &dev->class->subsys.kobj &&
|
if (dev->kobj.parent != &dev->class->subsys.kobj &&
|
||||||
dev->type != &part_type) {
|
device_is_not_partition(dev)) {
|
||||||
error = sysfs_create_link(&dev->class->subsys.kobj, &dev->kobj,
|
error = sysfs_create_link(&dev->class->subsys.kobj, &dev->kobj,
|
||||||
dev->bus_id);
|
dev->bus_id);
|
||||||
if (error)
|
if (error)
|
||||||
goto out_subsys;
|
goto out_subsys;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dev->parent && dev->type != &part_type) {
|
if (dev->parent && device_is_not_partition(dev)) {
|
||||||
struct device *parent = dev->parent;
|
struct device *parent = dev->parent;
|
||||||
char *class_name;
|
char *class_name;
|
||||||
|
|
||||||
@@ -688,11 +696,11 @@ static int device_add_class_symlinks(struct device *dev)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
out_device:
|
out_device:
|
||||||
if (dev->parent && dev->type != &part_type)
|
if (dev->parent && device_is_not_partition(dev))
|
||||||
sysfs_remove_link(&dev->kobj, "device");
|
sysfs_remove_link(&dev->kobj, "device");
|
||||||
out_busid:
|
out_busid:
|
||||||
if (dev->kobj.parent != &dev->class->subsys.kobj &&
|
if (dev->kobj.parent != &dev->class->subsys.kobj &&
|
||||||
dev->type != &part_type)
|
device_is_not_partition(dev))
|
||||||
sysfs_remove_link(&dev->class->subsys.kobj, dev->bus_id);
|
sysfs_remove_link(&dev->class->subsys.kobj, dev->bus_id);
|
||||||
#else
|
#else
|
||||||
/* link in the class directory pointing to the device */
|
/* link in the class directory pointing to the device */
|
||||||
@@ -701,7 +709,7 @@ out_busid:
|
|||||||
if (error)
|
if (error)
|
||||||
goto out_subsys;
|
goto out_subsys;
|
||||||
|
|
||||||
if (dev->parent && dev->type != &part_type) {
|
if (dev->parent && device_is_not_partition(dev)) {
|
||||||
error = sysfs_create_link(&dev->kobj, &dev->parent->kobj,
|
error = sysfs_create_link(&dev->kobj, &dev->parent->kobj,
|
||||||
"device");
|
"device");
|
||||||
if (error)
|
if (error)
|
||||||
@@ -725,7 +733,7 @@ static void device_remove_class_symlinks(struct device *dev)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
#ifdef CONFIG_SYSFS_DEPRECATED
|
#ifdef CONFIG_SYSFS_DEPRECATED
|
||||||
if (dev->parent && dev->type != &part_type) {
|
if (dev->parent && device_is_not_partition(dev)) {
|
||||||
char *class_name;
|
char *class_name;
|
||||||
|
|
||||||
class_name = make_class_name(dev->class->name, &dev->kobj);
|
class_name = make_class_name(dev->class->name, &dev->kobj);
|
||||||
@@ -737,10 +745,10 @@ static void device_remove_class_symlinks(struct device *dev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (dev->kobj.parent != &dev->class->subsys.kobj &&
|
if (dev->kobj.parent != &dev->class->subsys.kobj &&
|
||||||
dev->type != &part_type)
|
device_is_not_partition(dev))
|
||||||
sysfs_remove_link(&dev->class->subsys.kobj, dev->bus_id);
|
sysfs_remove_link(&dev->class->subsys.kobj, dev->bus_id);
|
||||||
#else
|
#else
|
||||||
if (dev->parent && dev->type != &part_type)
|
if (dev->parent && device_is_not_partition(dev))
|
||||||
sysfs_remove_link(&dev->kobj, "device");
|
sysfs_remove_link(&dev->kobj, "device");
|
||||||
|
|
||||||
sysfs_remove_link(&dev->class->subsys.kobj, dev->bus_id);
|
sysfs_remove_link(&dev->class->subsys.kobj, dev->bus_id);
|
||||||
|
Reference in New Issue
Block a user