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 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.