[PATCH 49/54] Driver Core: kill subsys_attribute and default sysfs ops

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: <linux-kernel@...>
Cc: Kay Sievers <kay.sievers@...>, Greg Kroah-Hartman <gregkh@...>
Date: Friday, November 2, 2007 - 7:59 pm

From: Kay Sievers <kay.sievers@vrfy.org>

Remove the no longer needed subsys_attributes, they are all converted to
the more sensical kobj_attributes.

There is no longer a magic fallback in sysfs attribute operations, all
kobjects which create simple attributes need explicitely a ktype
assigned, which tells the core what was intended here.

Signed-off-by: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 fs/sysfs/file.c         |   63 +++++++---------------------------------------
 include/linux/kobject.h |    9 ------
 lib/kobject.c           |   21 ---------------
 3 files changed, 10 insertions(+), 83 deletions(-)

diff --git a/fs/sysfs/file.c b/fs/sysfs/file.c
index 4d6fba0..fb5a1c2 100644
--- a/fs/sysfs/file.c
+++ b/fs/sysfs/file.c
@@ -20,43 +20,6 @@
 
 #include "sysfs.h"
 
-#define to_sattr(a) container_of(a,struct subsys_attribute, attr)
-
-/*
- * Subsystem file operations.
- * These operations allow subsystems to have files that can be 
- * read/written. 
- */
-static ssize_t 
-subsys_attr_show(struct kobject * kobj, struct attribute * attr, char * page)
-{
-	struct kset *kset = to_kset(kobj);
-	struct subsys_attribute * sattr = to_sattr(attr);
-	ssize_t ret = -EIO;
-
-	if (sattr->show)
-		ret = sattr->show(kset, page);
-	return ret;
-}
-
-static ssize_t 
-subsys_attr_store(struct kobject * kobj, struct attribute * attr, 
-		  const char * page, size_t count)
-{
-	struct kset *kset = to_kset(kobj);
-	struct subsys_attribute * sattr = to_sattr(attr);
-	ssize_t ret = -EIO;
-
-	if (sattr->store)
-		ret = sattr->store(kset, page, count);
-	return ret;
-}
-
-static struct sysfs_ops subsys_sysfs_ops = {
-	.show	= subsys_attr_show,
-	.store	= subsys_attr_store,
-};
-
 /*
  * There's one sysfs_buffer for each open file and one
  * sysfs_open_dirent for each sysfs_dirent with one or more open
@@ -350,29 +313,23 @@ static int sysfs_open_file(struct inode *inode, struct file *file)
 {
 	struct sysfs_dirent *attr_sd = file->f_path.dentry->d_fsdata;
 	struct kobject *kobj = attr_sd->s_parent->s_dir.kobj;
-	struct sysfs_buffer * buffer;
-	struct sysfs_ops * ops = NULL;
-	int error;
+	struct sysfs_buffer *buffer;
+	struct sysfs_ops *ops;
+	int error = -EACCES;
 
 	/* need attr_sd for attr and ops, its parent for kobj */
 	if (!sysfs_get_active_two(attr_sd))
 		return -ENODEV;
 
-	/* if the kobject has no ktype, then we assume that it is a subsystem
-	 * itself, and use ops for it.
-	 */
-	if (kobj->ktype)
+	/* every kobject with an attribute needs a ktype assigned */
+	if (kobj->ktype && kobj->ktype->sysfs_ops)
 		ops = kobj->ktype->sysfs_ops;
-	else
-		ops = &subsys_sysfs_ops;
-
-	error = -EACCES;
-
-	/* No sysfs operations, either from having no subsystem,
-	 * or the subsystem have no operations.
-	 */
-	if (!ops)
+	else {
+		printk(KERN_ERR "missing sysfs attribute operations for "
+		       "kobject: %s\n", kobject_name(kobj));
+		WARN_ON(1);
 		goto err_out;
+	}
 
 	/* File needs write support.
 	 * The inode's perms must say it's ok, 
diff --git a/include/linux/kobject.h b/include/linux/kobject.h
index 3aa8108..05c8ef8 100644
--- a/include/linux/kobject.h
+++ b/include/linux/kobject.h
@@ -210,15 +210,6 @@ extern struct kset *firmware_kset;
 extern int __must_check subsystem_register(struct kset *);
 extern void subsystem_unregister(struct kset *);
 
-struct subsys_attribute {
-	struct attribute attr;
-	ssize_t (*show)(struct kset *, char *);
-	ssize_t (*store)(struct kset *, const char *, size_t);
-};
-
-extern int __must_check subsys_create_file(struct kset *,
-					struct subsys_attribute *);
-
 #if defined(CONFIG_HOTPLUG)
 int kobject_uevent(struct kobject *kobj, enum kobject_action action);
 int kobject_uevent_env(struct kobject *kobj, enum kobject_action action,
diff --git a/lib/kobject.c b/lib/kobject.c
index dda6614..c768e0c 100644
--- a/lib/kobject.c
+++ b/lib/kobject.c
@@ -671,26 +671,6 @@ void subsystem_unregister(struct kset *s)
 	kset_unregister(s);
 }
 
-/**
- *	subsystem_create_file - export sysfs attribute file.
- *	@s:	subsystem.
- *	@a:	subsystem attribute descriptor.
- */
-
-int subsys_create_file(struct kset *s, struct subsys_attribute *a)
-{
-	int error = 0;
-
-	if (!s || !a)
-		return -EINVAL;
-
-	if (kset_get(s)) {
-		error = sysfs_create_file(&s->kobj, &a->attr);
-		kset_put(s);
-	}
-	return error;
-}
-
 static void kset_release(struct kobject *kobj)
 {
 	struct kset *kset = container_of(kobj, struct kset, kobj);
@@ -795,4 +775,3 @@ EXPORT_SYMBOL(kset_unregister);
 
 EXPORT_SYMBOL(subsystem_register);
 EXPORT_SYMBOL(subsystem_unregister);
-EXPORT_SYMBOL(subsys_create_file);
-- 
1.5.3.4

-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Re: [RFC] kobject and kset core changes and cleanups, Andrew Morton, (Tue Nov 6, 4:04 am)
Re: [RFC] kobject and kset core changes and cleanups, Andrew Morton, (Tue Nov 6, 3:11 am)
Re: [RFC] kobject and kset core changes and cleanups, Stephane Eranian, (Tue Nov 6, 4:14 am)
Re: [RFC] kobject and kset core changes and cleanups, Stephane Eranian, (Tue Nov 6, 5:33 pm)
Re: [RFC] kobject and kset core changes and cleanups, Andrew Morton, (Tue Nov 6, 2:25 am)
[PATCH 54/54] kset: remove decl_subsys macro, Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 53/54] kset: convert ocfs2 to use kset_create, Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 47/54] kobject: convert parisc/pdc_stable to kobj_att..., Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 52/54] firmware: remove firmware_(un)register(), Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 51/54] kset: convert acpi to use kset_create, Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 50/54] kset: convert edd to use kset_create, Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 48/54] kset: convert parisc/pdc_stable.c to use kset_..., Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 49/54] Driver Core: kill subsys_attribute and default..., Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 46/54] kset: convert s390 ipl.c to use kset_create, Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 45/54] kobject: convert s390 ipl.c to kobj_attr inter..., Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 42/54] kset: convert efivars to use kset_create for t..., Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 44/54] kobject: convert pseries/power.c to kobj_attr ..., Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 38/54] efivars: remove new_var and del_var files from..., Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 43/54] kobject: convert arm/mach-omap1/pm.c to kobj_a..., Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 40/54] firmware: export firmware_kset so that people ..., Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 41/54] kset: convert efivars to use kset_create for t..., Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 39/54] kobject: convert efivars to kobj_attr interface, Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 37/54] ecryptfs: remove version_str file from sysfs, Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 33/54] driver core: remove fields from struct bus_type, Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 35/54] Driver Core: switch all dynamic ksets to kobj_..., Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 36/54] fix struct user_info export's sysfs interaction, Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 34/54] Driver Core: add kobj_attribute handling, Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 31/54] driver core: add way to get to bus kset, Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 32/54] driver core: add way to get to bus device klist, Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 30/54] driver core: remove owner field from struct bu..., Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 28/54] kset: convert struct bus_device-&gt;devices to..., Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 29/54] kset: convert struct bus_device-&gt;drivers to..., Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 27/54] kset: convert s390 hypervisor kset to use kset..., Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 26/54] kset: convert /sys/power to use kset_create, Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 25/54] kset: convert /sys/module to use kset_create, Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 22/54] kset: convert /sys/devices/system to use kset_..., Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 24/54] kset: move /sys/slab to /sys/kernel/slab, Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 23/54] kset: convert slub to use kset_create, Greg Kroah-Hartman, (Fri Nov 2, 7:59 pm)
[PATCH 16/54] kset: convert kernel_subsys to use kset_create, Greg Kroah-Hartman, (Fri Nov 2, 7:58 pm)
[PATCH 20/54] kset: convert /sys/devices to use kset_create, Greg Kroah-Hartman, (Fri Nov 2, 7:58 pm)
[PATCH 21/54] kset: convert /sys/hypervisor to use kset_create, Greg Kroah-Hartman, (Fri Nov 2, 7:58 pm)
[PATCH 19/54] kset: convert drivers/base/firmware.c kset_cre..., Greg Kroah-Hartman, (Fri Nov 2, 7:58 pm)
[PATCH 17/54] kset: convert drivers/base/bus.c kset_create_a..., Greg Kroah-Hartman, (Fri Nov 2, 7:58 pm)
[PATCH 18/54] kset: convert drivers/base/class.c kset_create..., Greg Kroah-Hartman, (Fri Nov 2, 7:58 pm)
[PATCH 15/54] kset: remove decl_subsys_name, Greg Kroah-Hartman, (Fri Nov 2, 7:58 pm)
[PATCH 13/54] kset: convert dlm to use kset_create, Greg Kroah-Hartman, (Fri Nov 2, 7:58 pm)
[PATCH 14/54] kset: convert pci hotplug to use kset_create_a..., Greg Kroah-Hartman, (Fri Nov 2, 7:58 pm)
[PATCH 12/54] kset: convert gfs2 dlm to use kset_create, Greg Kroah-Hartman, (Fri Nov 2, 7:58 pm)
[PATCH 11/54] kset: convert gfs2 to use kset_create, Greg Kroah-Hartman, (Fri Nov 2, 7:58 pm)
[PATCH 10/54] kset: convert main fs kset to use kset_create, Greg Kroah-Hartman, (Fri Nov 2, 7:58 pm)
[PATCH 09/54] kset: convert ecryptfs to use kset_create, Greg Kroah-Hartman, (Fri Nov 2, 7:58 pm)
[PATCH 06/54] kset: convert securityfs to use kset_create, Greg Kroah-Hartman, (Fri Nov 2, 7:58 pm)
[PATCH 08/54] kset: convert configfs to use kset_create, Greg Kroah-Hartman, (Fri Nov 2, 7:58 pm)
[PATCH 07/54] kset: convert debugfs to use kset_create, Greg Kroah-Hartman, (Fri Nov 2, 7:58 pm)
[PATCH 05/54] kset: convert fuse to use kset_create, Greg Kroah-Hartman, (Fri Nov 2, 7:58 pm)
[PATCH 04/54] kset: add kset_create_and_register function, Greg Kroah-Hartman, (Fri Nov 2, 7:58 pm)
[PATCH 03/54] KOBJECT: remove kobj_set_kset_s as no one is u..., Greg Kroah-Hartman, (Fri Nov 2, 7:58 pm)
[PATCH 02/54] KOBJECT: remove struct kobj_type from struct k..., Greg Kroah-Hartman, (Fri Nov 2, 7:58 pm)
[PATCH 01/54] ecryptfs: clean up attribute mess, Greg Kroah-Hartman, (Fri Nov 2, 7:58 pm)