Skip to content

Commit

Permalink
[SCSI] attribute_container: update to use the group interface
Browse files Browse the repository at this point in the history
This patch is the beginning of moving the attribute_containers to use
attribute groups exclusively.  The attr element is now deprecated and
will eventually be removed (along with all the hand rolled code for
doing exactly what attribute groups do) when all the consumers are
converted to attribute groups.

Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
  • Loading branch information
James Bottomley authored and James Bottomley committed Jan 23, 2008
1 parent 11f24fb commit fd11097
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 2 deletions.
14 changes: 12 additions & 2 deletions drivers/base/attribute_container.c
Original file line number Diff line number Diff line change
Expand Up @@ -320,9 +320,14 @@ attribute_container_add_attrs(struct class_device *classdev)
struct class_device_attribute **attrs = cont->attrs;
int i, error;

if (!attrs)
BUG_ON(attrs && cont->grp);

if (!attrs && !cont->grp)
return 0;

if (cont->grp)
return sysfs_create_group(&classdev->kobj, cont->grp);

for (i = 0; attrs[i]; i++) {
error = class_device_create_file(classdev, attrs[i]);
if (error)
Expand Down Expand Up @@ -378,9 +383,14 @@ attribute_container_remove_attrs(struct class_device *classdev)
struct class_device_attribute **attrs = cont->attrs;
int i;

if (!attrs)
if (!attrs && !cont->grp)
return;

if (cont->grp) {
sysfs_remove_group(&classdev->kobj, cont->grp);
return ;
}

for (i = 0; attrs[i]; i++)
class_device_remove_file(classdev, attrs[i]);
}
Expand Down
1 change: 1 addition & 0 deletions include/linux/attribute_container.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ struct attribute_container {
struct list_head node;
struct klist containers;
struct class *class;
struct attribute_group *grp;
struct class_device_attribute **attrs;
int (*match)(struct attribute_container *, struct device *);
#define ATTRIBUTE_CONTAINER_NO_CLASSDEVS 0x01
Expand Down

0 comments on commit fd11097

Please sign in to comment.