提交 4e886c29 编写于 作者: G Greg Kroah-Hartman

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: NGreg Kroah-Hartman <gregkh@suse.de>
上级 91525300
...@@ -149,7 +149,7 @@ int class_register(struct class *cls) ...@@ -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 @@ ...@@ -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) ...@@ -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) ...@@ -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 @@ static int device_add_class_symlinks(struct device *dev) ...@@ -701,7 +709,7 @@ static int device_add_class_symlinks(struct device *dev)
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) ...@@ -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) ...@@ -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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册