From: Hannes Reinecke <hare@suse.de>
To: sekharan@us.ibm.com
Cc: James Bottomley <James.Bottomley@HansenPartnership.com>,
linux-scsi@vger.kernel.org, dm-devel <dm-devel@redhat.com>
Subject: Re: [PATCH 2/7] scsi_dh: Add 'dh_state' sysfs attribute
Date: Thu, 15 May 2008 09:23:39 +0200 [thread overview]
Message-ID: <482BE4FB.4080800@suse.de> (raw)
In-Reply-To: <1210819555.21974.253.camel@chandra-ubuntu>
Chandra Seetharaman wrote:
> On Wed, 2008-05-14 at 16:43 +0200, Hannes Reinecke wrote:
>> Implement a 'dh_state' sdev attribute for dynamic device handler
>> manipulation. A read on the attribute will return the name of
>> the currently attached device handler or 'detached' if no handler
>> is attached.
>> The attribute allows the following strings to be written:
>> - The name of the device handler to be attached if the state is
>> 'detached'.
>> - 'activate' to trigger path activation if a device handler
>> is attached.
>> - 'detach' to detach the currently attached device handler.
>>
>> Signed-off-by: Hannes Reinecke <hare@suse.de>
>> ---
>
> All the sysfs functions can be grouped together. Helps in readability.
>
?? But I did ... Or thought so, anyway. Checking.
>> drivers/scsi/device_handler/scsi_dh.c | 88 +++++++++++++++++++++++++++++++++
>> 1 files changed, 88 insertions(+), 0 deletions(-)
>>
>> diff --git a/drivers/scsi/device_handler/scsi_dh.c b/drivers/scsi/device_handler/scsi_dh.c
>> index 55e5fd2..2dbf84b 100644
>> --- a/drivers/scsi/device_handler/scsi_dh.c
>> +++ b/drivers/scsi/device_handler/scsi_dh.c
>> @@ -54,6 +54,55 @@ static struct scsi_device_handler *get_device_handler(const char *name)
>> return found;
>> }
>>
>> +static ssize_t
>> +store_dh_state(struct device *dev, struct device_attribute *attr,
>> + const char *buf, size_t count)
>> +{
>> + struct scsi_device *sdev = to_scsi_device(dev);
>> + struct scsi_device_handler *scsi_dh;
>> + int err = -EINVAL;
>> +
>> + if (!sdev->scsi_dh_data) {
>> + /*
>> + * Attach to a device handler
>> + */
>> + if (!(scsi_dh = get_device_handler(buf)))
>> + return err;
>> + err = scsi_dh_handler_attach(sdev, scsi_dh);
>> + } else {
>> + /*
>> + * Detach from a device handler
>> + */
>> + if (!strncmp(buf, "detach", 6)) {
>> + err = scsi_dh_handler_detach(sdev);
>> + } else if (!strncmp(buf, "activate", 8)) {
>> + scsi_dh = sdev->scsi_dh_data->scsi_dh;
>> +
>> + err = scsi_dh->activate(sdev);
>> + }
>> + }
>> +
>> + return err<0?err:count;
>> +}
>> +
>> +static ssize_t
>> +show_dh_state(struct device *dev, struct device_attribute *attr, char *buf)
>> +{
>> + struct scsi_device *sdev = to_scsi_device(dev);
>> + struct scsi_device_handler *scsi_dh;
>> +
>> + if (!sdev->scsi_dh_data)
>> + return snprintf(buf, 20, "detached\n");
>> +
>> + scsi_dh = sdev->scsi_dh_data->scsi_dh;
>
> we can use it directly instead of this variable ?
>
Yes.
>> +
>> + return snprintf(buf, 20, "%s\n", scsi_dh->name);
>> +}
>> +
>> +static struct device_attribute scsi_dh_state_attr =
>> + __ATTR(dh_state, S_IRUGO | S_IWUSR, show_dh_state,
>> + store_dh_state);
>> +
>> /*
>> * scsi_dh_handler_attach - Attach a device handler to a device
>> * @sdev - SCSI device the device handler should attach to
>> @@ -115,9 +164,11 @@ static int scsi_dh_notifier(struct notifier_block *nb,
>>
>> if (action == BUS_NOTIFY_ADD_DEVICE) {
>> scsi_dh_handler_attach(sdev, devinfo->handler);
>> + device_create_file(dev, &scsi_dh_state_attr);
>
> A later patch checks for the return status of scsi_dh_handler_attach(),
> should be moved here.
>
Ok.
Cheers,
Hannes
--
Dr. Hannes Reinecke zSeries & Storage
hare@suse.de +49 911 74053 688
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: Markus Rex, HRB 16746 (AG Nürnberg)
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2008-05-15 7:23 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-14 14:43 [PATCH 2/7] scsi_dh: Add 'dh_state' sysfs attribute Hannes Reinecke
2008-05-15 2:45 ` Chandra Seetharaman
2008-05-15 7:23 ` Hannes Reinecke [this message]
-- strict thread matches above, loose matches on Subject: below --
2008-05-20 14:05 Hannes Reinecke
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=482BE4FB.4080800@suse.de \
--to=hare@suse.de \
--cc=James.Bottomley@HansenPartnership.com \
--cc=dm-devel@redhat.com \
--cc=linux-scsi@vger.kernel.org \
--cc=sekharan@us.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.