public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
From: Hannes Reinecke <hare@suse.de>
To: Bart Van Assche <bart.vanassche@sandisk.com>,
	James Bottomley <jbottomley@parallels.com>
Cc: Christoph Hellwig <hch@lst.de>, linux-scsi@vger.kernel.org
Subject: Re: [PATCH 08/17] scsi_dh_alua: Make stpg synchronous
Date: Thu, 07 May 2015 15:36:38 +0200	[thread overview]
Message-ID: <554B6A66.9070603@suse.de> (raw)
In-Reply-To: <554B57F8.1060209@sandisk.com>

On 05/07/2015 02:18 PM, Bart Van Assche wrote:
> On 05/04/15 14:42, Hannes Reinecke wrote:
>> +static unsigned alua_stpg(struct scsi_device *sdev, struct
>> alua_dh_data *h)
>> +{
>> +    int retval, err = SCSI_DH_RETRY;
>> +    unsigned char sense[SCSI_SENSE_BUFFERSIZE];
>> +    struct scsi_sense_hdr sense_hdr;
>> +
>> +    if (!(h->tpgs & TPGS_MODE_EXPLICIT)) {
>> +        /* Only implicit ALUA supported, retry */
>> +        return SCSI_DH_RETRY;
>> +    }
>> +    switch (h->state) {
>> +    case TPGS_STATE_OPTIMIZED:
>> +        return SCSI_DH_OK;
>> +    case TPGS_STATE_NONOPTIMIZED:
>> +        if ((h->flags & ALUA_OPTIMIZE_STPG) &&
>> +            (!h->pref) &&
>> +            (h->tpgs & TPGS_MODE_IMPLICIT))
>> +            return SCSI_DH_OK;
>> +        break;
>> +    case TPGS_STATE_STANDBY:
>> +    case TPGS_STATE_UNAVAILABLE:
>> +        break;
>> +    case TPGS_STATE_OFFLINE:
>> +        return SCSI_DH_IO;
>> +        break;
>> +    case TPGS_STATE_TRANSITIONING:
>> +        break;
>> +    default:
>> +        sdev_printk(KERN_INFO, sdev,
>> +                "%s: stpg failed, unhandled TPGS state %d",
>> +                ALUA_DH_NAME, pg->state);
>> +        return SCSI_DH_NOSYS;
>> +        break;
>> +    }
>> +    /* Set state to transitioning */
>> +    h->state = TPGS_STATE_TRANSITIONING;
>> +    retval = submit_stpg(sdev, h->group_id, sense);
>> +
>> +    if (retval) {
>> +        if (!(driver_byte(retval) & DRIVER_SENSE) ||
>> +            !scsi_normalize_sense(sense, SCSI_SENSE_BUFFERSIZE,
>> +                      &sense_hdr)) {
>> +            sdev_printk(KERN_INFO, sdev,
>> +                    "%s: stpg failed, result %d",
>> +                    ALUA_DH_NAME, retval);
>> +            /* Retry RTPG */
>> +            return err;
>> +        }
>> +        err = alua_check_sense(h->sdev, &sense_hdr);
>> +        sdev_printk(KERN_INFO, h->sdev, "%s: stpg failed\n",
>> +                ALUA_DH_NAME);
>> +        scsi_print_sense_hdr(sdev, ALUA_DH_NAME, &sense_hdr);
>> +        err = SCSI_DH_RETRY;
>> +    }
>> +    return err;
>> +}
> 
> The value returned by alua_check_sense() is assigned to the variable
> 'err' but that value is not used. Otherwise in this function the
> variable 'err' always has the value SCSI_DH_RETRY. Does that mean
> that that variable can be removed ? 
Hmm. Yes, we could.

> Additionally, why is 'retval'
> only printed if normalizing the sense data succeeds and not if
> normalizing the sense data fails ? Has it been considered to print
> the ASC and ASCQ values upon STPG failure ? Having these values
> available can be a big help during debugging.
> 
We do print the ASC / ASCQ values; that's what scsi_print_sense_hdr
does. And the above line works on the assumption that iff
DRIVER_SENSE is set in the retval we'll have a sense code, and
this sense code will give more information than any other
(internally generated) error status. So 'retval' isn't printed
in that case, only if no sense code is provided or if we fail
to decode it.

Cheers,

Hannes
-- 
Dr. Hannes Reinecke		               zSeries & Storage
hare@suse.de			               +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
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

  reply	other threads:[~2015-05-07 13:36 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-04 12:42 [PATCH 00/17] asynchronous ALUA device handler Hannes Reinecke
2015-05-04 12:42 ` [PATCH 01/17] scsi_dh: return individual errors in scsi_dh_activate() Hannes Reinecke
2015-05-07 11:34   ` Bart Van Assche
2015-05-11  6:34   ` Christoph Hellwig
2015-05-04 12:42 ` [PATCH 02/17] scsi_dh_alua: Disable ALUA handling for non-disk devices Hannes Reinecke
2015-05-07 11:34   ` Bart Van Assche
2015-05-11  6:46   ` Christoph Hellwig
2015-05-11 10:25     ` Hannes Reinecke
2015-05-11 11:34       ` Christoph Hellwig
2015-05-11 11:55         ` Hannes Reinecke
2015-05-11 12:19           ` Christoph Hellwig
2015-05-04 12:42 ` [PATCH 03/17] scsi_dh_alua: Use vpd_pg83 information Hannes Reinecke
2015-05-07 11:41   ` Bart Van Assche
2015-05-07 11:50     ` Hannes Reinecke
2015-05-11  6:48   ` Christoph Hellwig
2015-05-11 10:11     ` Hannes Reinecke
2015-05-04 12:42 ` [PATCH 04/17] scsi_dh_alua: Improve error handling Hannes Reinecke
2015-05-07 11:48   ` Bart Van Assche
2015-05-07 11:52     ` Hannes Reinecke
2015-05-11 13:19       ` Hannes Reinecke
2015-05-04 12:42 ` [PATCH 05/17] scsi: remove scsi_show_sense_hdr() Hannes Reinecke
2015-05-07 11:49   ` Bart Van Assche
2015-05-11  6:49   ` Christoph Hellwig
2015-05-04 12:42 ` [PATCH 06/17] scsi_dh_alua: use flag for RTPG extended header Hannes Reinecke
2015-05-07 11:52   ` Bart Van Assche
2015-05-11  6:50   ` Christoph Hellwig
2015-05-04 12:42 ` [PATCH 07/17] scsi_dh_alua: Pass buffer as function argument Hannes Reinecke
2015-05-07 11:57   ` Bart Van Assche
2015-05-11  6:51   ` Christoph Hellwig
2015-05-04 12:42 ` [PATCH 08/17] scsi_dh_alua: Make stpg synchronous Hannes Reinecke
2015-05-07 12:18   ` Bart Van Assche
2015-05-07 13:36     ` Hannes Reinecke [this message]
2015-05-11  6:55   ` Christoph Hellwig
2015-05-11  9:59     ` Hannes Reinecke
2015-05-11 13:50       ` Christoph Hellwig
2015-05-11 13:59         ` Hannes Reinecke
2015-05-04 12:42 ` [PATCH 09/17] scsi_dh_alua: switch to scsi_execute() Hannes Reinecke
2015-05-06  9:26   ` Christoph Hellwig
2015-05-06  9:58     ` Hannes Reinecke
2015-05-04 12:42 ` [PATCH 10/17] scsi_dh_alua: Use separate alua_port_group structure Hannes Reinecke
2015-05-07 12:34   ` Bart Van Assche
2015-05-07 13:36     ` Bart Van Assche
2015-05-07 13:46       ` Hannes Reinecke
2015-05-07 13:37     ` Hannes Reinecke
2015-05-11 12:32   ` Christoph Hellwig
2015-05-11 12:36     ` Hannes Reinecke
2015-05-04 12:42 ` [PATCH 11/17] scsi_dh_alua: simplify sense code handling Hannes Reinecke
2015-05-11  6:58   ` Christoph Hellwig
2015-05-11 14:52     ` Hannes Reinecke
2015-05-12  8:20       ` Christoph Hellwig
2015-05-04 12:42 ` [PATCH 12/17] scsi_dh_alua: parse target device id Hannes Reinecke
2015-05-04 12:42 ` [PATCH 13/17] scsi_dh_alua: revert commit a8e5a2d593cbfccf530c3382c2c328d2edaa7b66 Hannes Reinecke
2015-05-11  7:00   ` Christoph Hellwig
2015-05-11 10:00     ` Hannes Reinecke
2015-05-04 12:42 ` [PATCH 14/17] scsi_dh_alua: Use workqueue for RTPG Hannes Reinecke
2015-05-11 13:49   ` Christoph Hellwig
2015-05-11 13:59     ` Hannes Reinecke
2015-05-12  8:16       ` Christoph Hellwig
2015-05-13  9:10         ` Hannes Reinecke
2015-05-04 12:42 ` [PATCH 15/17] scsi_dh_alua: Recheck state on unit attention Hannes Reinecke
2015-05-04 12:42 ` [PATCH 16/17] scsi_dh_alua: update all port states Hannes Reinecke
2015-05-04 12:42 ` [PATCH 17/17] scsi_dh_alua: Update version to 2.0 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=554B6A66.9070603@suse.de \
    --to=hare@suse.de \
    --cc=bart.vanassche@sandisk.com \
    --cc=hch@lst.de \
    --cc=jbottomley@parallels.com \
    --cc=linux-scsi@vger.kernel.org \
    /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