From: Hannes Reinecke <hare@suse.de>
To: Steffen Maier <maier@linux.vnet.ibm.com>,
James Bottomley <James.Bottomley@HansenPartnership.com>
Cc: linux-scsi@vger.kernel.org, linux-s390@vger.kernel.org,
Martin Schwidefsky <schwidefsky@de.ibm.com>,
Heiko Carstens <heiko.carstens@de.ibm.com>
Subject: Re: [PATCH 2/3] zfcp: bring back unit sysfs attributes for automatic LUN scan
Date: Mon, 17 Nov 2014 14:34:55 +0100 [thread overview]
Message-ID: <5469F97F.7050909@suse.de> (raw)
In-Reply-To: <1415887188-40233-3-git-send-email-maier@linux.vnet.ibm.com>
On 11/13/2014 02:59 PM, Steffen Maier wrote:
> Through sysfs attributes, zfcp unit objects
> provide a trigger for manual LUN recovery
> and export information for problem determination.
>
> With commit
> f8210e34887e1feb977a9b6b8caa086855af40c9
> "[SCSI] zfcp: Allow midlayer to scan for LUNs when running in NPIV mode"
> and when attaching SCSI devices through this new optional method,
> no more zfcp unit objects are allocated for such SCSI devices.
> Hence, the above-mentioned trigger and information were missing.
>
> The information and context is located in SCSI transport device data since
> b62a8d9b45b971a67a0f8413338c230e3117dff5
> "[SCSI] zfcp: Use SCSI device data zfcp_scsi_dev instead of zfcp_unit"
> 57c237731b92fadc7d44824276313ec330b1989b
> "[SCSI] zfcp: Add zfcp private struct as SCSI device driver data"
> Hence, introduce the trigger and the information unconditionally
> for all SCSI devices attached through zfcp.
>
> We prefix the attribute names with 'zfcp_' to prevent collisions and
> to avoid mix-ups such as with the common 'state' attribute.
>
> Since some of the new attribute views do not need zfcp_port
> in the ZFCP_DEFINE_SCSI_ATTR helper macro, remove zfcp_port
> to avoid compiler warnings on unused variable.
> It's easy to open code the conversion from zfcp_scsi_dev to zfcp_port
> for the two already existing attributes hba_id and wwpn.
>
> Signed-off-by: Steffen Maier <maier@linux.vnet.ibm.com>
> Reviewed-by: Martin Peschke <mpeschke@linux.vnet.ibm.com>
> ---
> drivers/s390/scsi/zfcp_sysfs.c | 52 +++++++++++++++++++++++++++++++++++++++---
> 1 file changed, 49 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/s390/scsi/zfcp_sysfs.c b/drivers/s390/scsi/zfcp_sysfs.c
> index 6b66412..a488c09 100644
> --- a/drivers/s390/scsi/zfcp_sysfs.c
> +++ b/drivers/s390/scsi/zfcp_sysfs.c
> @@ -437,16 +437,15 @@ static ssize_t zfcp_sysfs_scsi_##_name##_show(struct device *dev, \
> { \
> struct scsi_device *sdev = to_scsi_device(dev); \
> struct zfcp_scsi_dev *zfcp_sdev = sdev_to_zfcp(sdev); \
> - struct zfcp_port *port = zfcp_sdev->port; \
> \
> return sprintf(buf, _format, _value); \
> } \
> static DEVICE_ATTR(_name, S_IRUGO, zfcp_sysfs_scsi_##_name##_show, NULL);
>
> ZFCP_DEFINE_SCSI_ATTR(hba_id, "%s\n",
> - dev_name(&port->adapter->ccw_device->dev));
> + dev_name(&zfcp_sdev->port->adapter->ccw_device->dev));
> ZFCP_DEFINE_SCSI_ATTR(wwpn, "0x%016llx\n",
> - (unsigned long long) port->wwpn);
> + (unsigned long long) zfcp_sdev->port->wwpn);
>
> static ssize_t zfcp_sysfs_scsi_fcp_lun_show(struct device *dev,
> struct device_attribute *attr,
> @@ -458,6 +457,49 @@ static ssize_t zfcp_sysfs_scsi_fcp_lun_show(struct device *dev,
> }
> static DEVICE_ATTR(fcp_lun, S_IRUGO, zfcp_sysfs_scsi_fcp_lun_show, NULL);
>
> +ZFCP_DEFINE_SCSI_ATTR(zfcp_access_denied, "%d\n",
> + (atomic_read(&zfcp_sdev->status) &
> + ZFCP_STATUS_COMMON_ACCESS_DENIED) != 0);
> +
> +static ssize_t zfcp_sysfs_scsi_zfcp_failed_show(struct device *dev,
> + struct device_attribute *attr,
> + char *buf)
> +{
> + struct scsi_device *sdev = to_scsi_device(dev);
> + unsigned int status = atomic_read(&sdev_to_zfcp(sdev)->status);
> + unsigned int failed = status & ZFCP_STATUS_COMMON_ERP_FAILED ? 1 : 0;
> +
> + return sprintf(buf, "%d\n", failed);
> +}
> +
> +static ssize_t zfcp_sysfs_scsi_zfcp_failed_store(struct device *dev,
> + struct device_attribute *attr,
> + const char *buf, size_t count)
> +{
> + struct scsi_device *sdev = to_scsi_device(dev);
> + unsigned long val;
> +
> + if (kstrtoul(buf, 0, &val) || val != 0)
> + return -EINVAL;
> +
> + zfcp_erp_set_lun_status(sdev, ZFCP_STATUS_COMMON_RUNNING);
> + zfcp_erp_lun_reopen(sdev, ZFCP_STATUS_COMMON_ERP_FAILED,
> + "syufai3");
> + zfcp_erp_wait(sdev_to_zfcp(sdev)->port->adapter);
> +
> + return count;
> +}
> +static DEVICE_ATTR(zfcp_failed, S_IWUSR | S_IRUGO,
> + zfcp_sysfs_scsi_zfcp_failed_show,
> + zfcp_sysfs_scsi_zfcp_failed_store);
> +
> +ZFCP_DEFINE_SCSI_ATTR(zfcp_in_recovery, "%d\n",
> + (atomic_read(&zfcp_sdev->status) &
> + ZFCP_STATUS_COMMON_ERP_INUSE) != 0);
> +
> +ZFCP_DEFINE_SCSI_ATTR(zfcp_status, "0x%08x\n",
> + atomic_read(&zfcp_sdev->status));
> +
> struct device_attribute *zfcp_sysfs_sdev_attrs[] = {
> &dev_attr_fcp_lun,
> &dev_attr_wwpn,
> @@ -465,6 +507,10 @@ struct device_attribute *zfcp_sysfs_sdev_attrs[] = {
> &dev_attr_read_latency,
> &dev_attr_write_latency,
> &dev_attr_cmd_latency,
> + &dev_attr_zfcp_access_denied,
> + &dev_attr_zfcp_failed,
> + &dev_attr_zfcp_in_recovery,
> + &dev_attr_zfcp_status,
> NULL
> };
>
>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Cheers,
Hannes
--
Dr. Hannes Reinecke zSeries & Storage
hare@suse.de +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: J. Hawn, J. Guild, F. Imendörffer, HRB 21284 (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:[~2014-11-17 13:34 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-13 13:59 [PATCH 0/3] zfcp features for 3.19 Steffen Maier
2014-11-13 13:59 ` [PATCH 1/3] zfcp: remove access control tables interface (port leftovers) Steffen Maier
2014-11-17 13:29 ` Hannes Reinecke
2014-11-17 13:33 ` Hannes Reinecke
2014-11-13 13:59 ` [PATCH 2/3] zfcp: bring back unit sysfs attributes for automatic LUN scan Steffen Maier
2014-11-17 13:34 ` Hannes Reinecke [this message]
2014-11-13 13:59 ` [PATCH 3/3] zfcp: auto port scan resiliency Steffen Maier
2014-11-17 13:37 ` Hannes Reinecke
2014-11-20 15:52 ` [PATCH 0/3] zfcp features for 3.19 Christoph Hellwig
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=5469F97F.7050909@suse.de \
--to=hare@suse.de \
--cc=James.Bottomley@HansenPartnership.com \
--cc=heiko.carstens@de.ibm.com \
--cc=linux-s390@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=maier@linux.vnet.ibm.com \
--cc=schwidefsky@de.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox