All of lore.kernel.org
 help / color / mirror / Atom feed
From: Luben Tuikov <ltuikov@yahoo.com>
To: Greg KH <greg@kroah.com>
Cc: Daniel J Blueman <daniel.blueman@gmail.com>,
	Matthew Dharm <mdharm-usb@one-eyed-alien.net>,
	Linux Kernel <linux-kernel@vger.kernel.org>,
	Linux USB <linux-usb-devel@lists.sourceforge.net>,
	"usb-storage@lists.one-eyed-alien.net" 
	<usb-storage@lists.one-eyed-alien.net>
Subject: Re: [PATCH take 2] [USB] Use normalized sense when emulating autosense
Date: Fri, 2 Sep 2011 12:08:44 -0700	[thread overview]
Message-ID: <CB97E92C-3990-418B-BA04-94073E011ECE@yahoo.com> (raw)
In-Reply-To: <20110902181826.GA29848@kroah.com>

On Sep 2, 2011, at 11:18, Greg KH <greg@kroah.com> wrote:

> On Fri, Sep 02, 2011 at 02:24:36PM +0800, Daniel J Blueman wrote:
>> Hi Luben, Greg, Matthew,
>> 
>> Any plan for reviewing and accepting this patch [1] yet? I'm still
>> seeing the symptoms on USB 3 SATA bridges with linux-3.0+.
> 
> I needed an ack from Matthew before I could take it.
> 
> Matthew?


He acked it already: http://marc.info/?l=linux-kernel&m=128950140420081&w=2

But interestingly enough, it never made it into your tree. 

> 
> 
>> --- [1]
>> 
>> http://www.kerneltrap.com/mailarchive/linux-kernel/2010/11/11/4644097/thread
>> 
>> This patch solves two things:
>> 1) Enables autosense emulation code to correctly
>> interpret descriptor format sense data, and
>> 2) Fixes a bug whereby the autosense emulation
>> code would overwrite descriptor format sense data
>> with SENSE KEY HARDWARE ERROR in fixed format, to
>> incorrectly look like this:
>> 
>> Oct 21 14:11:07 localhost kernel: sd 7:0:0:0: [sdc]  Sense Key :
>> Recovered Error [current] [descriptor]
>> Oct 21 14:11:07 localhost kernel: Descriptor sense data with sense
>> descriptors (in hex):
>> Oct 21 14:11:07 localhost kernel:        72 01 04 1d 00 00 00 0e 09 0c
>> 00 00 00 00 00 00
>> Oct 21 14:11:07 localhost kernel:        00 4f 00 c2 00 50
>> Oct 21 14:11:07 localhost kernel: sd 7:0:0:0: [sdc]  ASC=0x4 ASCQ=0x1d
>> 
>> Signed-off-by: Luben Tuikov <ltuikov@yahoo.com>
>> ---
>> drivers/usb/storage/transport.c |   34 +++++++++++++++++++---------------
>> 1 files changed, 19 insertions(+), 15 deletions(-)
>> 
>> diff --git a/drivers/usb/storage/transport.c b/drivers/usb/storage/transport.c
>> index 64ec073..cb04664 100644
>> --- a/drivers/usb/storage/transport.c
>> +++ b/drivers/usb/storage/transport.c
>> @@ -691,6 +691,9 @@ void usb_stor_invoke_transport(struct scsi_cmnd
>> *srb, struct us_data *us)
>>        int temp_result;
>>        struct scsi_eh_save ses;
>>        int sense_size = US_SENSE_SIZE;
>> +        struct scsi_sense_hdr sshdr;
>> +        const u8 *scdd;
>> +        u8 fm_ili;
>> 
>>        /* device supports and needs bigger sense buffer */
>>        if (us->fflags & US_FL_SANE_SENSE)
>> @@ -774,32 +777,30 @@ Retry_Sense:
>>            srb->sense_buffer[7] = (US_SENSE_SIZE - 8);
>>        }
>> 
>> +        scsi_normalize_sense(srb->sense_buffer, SCSI_SENSE_BUFFERSIZE,
>> +                     &sshdr);
>> +
>>        US_DEBUGP("-- Result from auto-sense is %d\n", temp_result);
>>        US_DEBUGP("-- code: 0x%x, key: 0x%x, ASC: 0x%x, ASCQ: 0x%x\n",
>> -              srb->sense_buffer[0],
>> -              srb->sense_buffer[2] & 0xf,
>> -              srb->sense_buffer[12],
>> -              srb->sense_buffer[13]);
>> +              sshdr.response_code, sshdr.sense_key,
>> +              sshdr.asc, sshdr.ascq);
>> #ifdef CONFIG_USB_STORAGE_DEBUG
>> -        usb_stor_show_sense(
>> -              srb->sense_buffer[2] & 0xf,
>> -              srb->sense_buffer[12],
>> -              srb->sense_buffer[13]);
>> +        usb_stor_show_sense(sshdr.sense_key, sshdr.asc, sshdr.ascq);
>> #endif
>> 
>>        /* set the result so the higher layers expect this data */
>>        srb->result = SAM_STAT_CHECK_CONDITION;
>> 
>> +        scdd = scsi_sense_desc_find(srb->sense_buffer,
>> +                        SCSI_SENSE_BUFFERSIZE, 4);
>> +        fm_ili = (scdd ? scdd[3] : srb->sense_buffer[2]) & 0xA0;
>> +
>>        /* We often get empty sense data.  This could indicate that
>>         * everything worked or that there was an unspecified
>>         * problem.  We have to decide which.
>>         */
>> -        if (    /* Filemark 0, ignore EOM, ILI 0, no sense */
>> -                (srb->sense_buffer[2] & 0xaf) == 0 &&
>> -            /* No ASC or ASCQ */
>> -                srb->sense_buffer[12] == 0 &&
>> -                srb->sense_buffer[13] == 0) {
>> -
>> +        if (sshdr.sense_key == 0 && sshdr.asc == 0 && sshdr.ascq == 0 &&
>> +            fm_ili == 0) {
>>            /* If things are really okay, then let's show that.
>>             * Zero out the sense buffer so the higher layers
>>             * won't realize we did an unsolicited auto-sense.
>> @@ -814,7 +815,10 @@ Retry_Sense:
>>             */
>>            } else {
>>                srb->result = DID_ERROR << 16;
>> -                srb->sense_buffer[2] = HARDWARE_ERROR;
>> +                if ((sshdr.response_code & 0x72) == 0x72)
>> +                    srb->sense_buffer[1] = HARDWARE_ERROR;
>> +                else
>> +                    srb->sense_buffer[2] = HARDWARE_ERROR;
>>            }
>>        }
>>    }
>> -- 
>> Daniel J Blueman

  reply	other threads:[~2011-09-02 19:14 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-02  6:24 [PATCH take 2] [USB] Use normalized sense when emulating autosense Daniel J Blueman
2011-09-02 18:18 ` Greg KH
2011-09-02 19:08   ` Luben Tuikov [this message]
2011-09-02 19:22     ` Greg KH
2011-09-02 21:28       ` Luben Tuikov
2011-09-02 21:41         ` Greg KH
  -- strict thread matches above, loose matches on Subject: below --
2010-10-22 21:12 Luben Tuikov
2010-11-11 13:44 ` Greg KH
2010-11-11 16:49   ` Luben Tuikov
2010-11-11 16:49     ` Luben Tuikov
2010-11-11 16:57     ` Greg KH
2010-11-11 17:07       ` Luben Tuikov
2010-11-11 17:07         ` Luben Tuikov
2010-11-11 17:43         ` Matthew Dharm
2010-11-11 18:27           ` Luben Tuikov
2010-11-11 18:27             ` Luben Tuikov
2010-11-11 18:49             ` Matthew Dharm
2010-11-11 18:49               ` Matthew Dharm
2010-11-11 19:11               ` Greg KH
2010-11-11 19:50                 ` Luben Tuikov
2010-11-11 19:50                   ` Luben Tuikov

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=CB97E92C-3990-418B-BA04-94073E011ECE@yahoo.com \
    --to=ltuikov@yahoo.com \
    --cc=daniel.blueman@gmail.com \
    --cc=greg@kroah.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb-devel@lists.sourceforge.net \
    --cc=mdharm-usb@one-eyed-alien.net \
    --cc=usb-storage@lists.one-eyed-alien.net \
    /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.