Skip to content

Commit

Permalink
scsi: core: host template attribute groups
Browse files Browse the repository at this point in the history
The patch introduces an additional field in the scsi_host_template
structure - struct attribute_group **sdev_group.  This field allows to
define groups of attributes. It will provide an ability to use binary
attributes as well as device attributes and to group them under
subfolders if necessary.

Signed-off-by: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
  • Loading branch information
stanislav-nijnikov-wdc authored and martinkpetersen committed Feb 15, 2018
1 parent 2238d31 commit 86b87cd
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 0 deletions.
11 changes: 11 additions & 0 deletions drivers/scsi/scsi_sysfs.c
Expand Up @@ -1310,6 +1310,13 @@ int scsi_sysfs_add_sdev(struct scsi_device *sdev)
}
}

if (sdev->host->hostt->sdev_groups) {
error = sysfs_create_groups(&sdev->sdev_gendev.kobj,
sdev->host->hostt->sdev_groups);
if (error)
return error;
}

scsi_autopm_put_device(sdev);
return error;
}
Expand Down Expand Up @@ -1349,6 +1356,10 @@ void __scsi_remove_device(struct scsi_device *sdev)
if (res != 0)
return;

if (sdev->host->hostt->sdev_groups)
sysfs_remove_groups(&sdev->sdev_gendev.kobj,
sdev->host->hostt->sdev_groups);

bsg_unregister_queue(sdev->request_queue);
device_unregister(&sdev->sdev_dev);
transport_remove_device(dev);
Expand Down
6 changes: 6 additions & 0 deletions include/scsi/scsi_host.h
Expand Up @@ -476,6 +476,12 @@ struct scsi_host_template {
*/
struct device_attribute **sdev_attrs;

/*
* Pointer to the SCSI device attribute groups for this host,
* NULL terminated.
*/
const struct attribute_group **sdev_groups;

/*
* List of hosts per template.
*
Expand Down

0 comments on commit 86b87cd

Please sign in to comment.