All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kurt Garloff <garloff@suse.de>
To: Bart Hartgers <bart@etpmod.phys.tue.nl>
Cc: linux-kernel@vger.kernel.org
Subject: Re: hwscan hangs on USB2 disk - SCSI_IOCTL_SEND_COMMAND
Date: Tue, 29 Jun 2004 11:45:57 +0200	[thread overview]
Message-ID: <20040629094557.GR4732@tpkurt.garloff.de> (raw)
In-Reply-To: <20040629093739.40243364C@etpmod.phys.tue.nl>

[-- Attachment #1: Type: text/plain, Size: 1832 bytes --]

Hi Bart,

On Tue, Jun 29, 2004 at 11:37:36AM +0200, Bart Hartgers wrote:
> The problem is that both hwscan and usb-storage get stuck in the 'D"
> state until I unplug the harddisk.
> 
> A strace of hwscan shows:
> 
> 21141 open("/dev/sda", O_RDONLY|O_NONBLOCK) = 3
> 21141 ioctl(3, 0x301, 0xbfffeba0)       = 0
> 21141 ioctl(3, BLKSSZGET, 0xbfffeb9c)   = 0
> 21141 ioctl(3, 0x80041272, 0xbfffeb90)  = 0
> 21141 ioctl(3, FIBMAP, 0xbfffec40)      = 0  <--- hwscan gets stuck here
> 
> The last ioctl corresponds to this bit of code in
> hwinfo-8.38/src/hd/block.c:
> 
> #ifndef SCSI_IOCTL_SEND_COMMAND
> #define SCSI_IOCTL_SEND_COMMAND 1
> #endif
> 
> ...
> 
>       memset(scsi_cmd_buf, 0, sizeof scsi_cmd_buf);
>       // ###### FIXME: smaller!
>       *((unsigned *) (scsi_cmd_buf + 4)) = sizeof scsi_cmd_buf - 0x100;
>       scsi_cmd_buf[8 + 0] = 0x12;
>       scsi_cmd_buf[8 + 1] = 0x01;
>       scsi_cmd_buf[8 + 2] = 0x80;
>       scsi_cmd_buf[8 + 4] = 0xff;
> 
>       k = ioctl(fd, SCSI_IOCTL_SEND_COMMAND, scsi_cmd_buf);
> 
> So it appears that the driver hangs because of a SCSI command. Is this
> kernel bug, and if so, where do I fix it?

To me it looks like a bug in the USB stick.
It probably locks up when you ask for VPD page 0x80 (serial number)
of the device with INQUIRY. 
Some shitty USB devices lock up when you ask for more than 36 bytes
with INQUIRY. See code in scsi_scan.c and the BLIST_INQUIRY_36 and
_58 flags.
Your device may even do so when you don't ask for standard INQUIRY 
data but for EVPD page 0x80 :-(

Does it work if you send the INQUIRY with 36 bytes allocation length?
scsi_cmd_buf[8 + 4] = 0x26;
-- 
Kurt Garloff  <garloff@suse.de>                            Cologne, DE 
SUSE LINUX AG / Novell, Nuernberg, DE               Director SUSE Labs

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

  reply	other threads:[~2004-06-29 10:19 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-06-29  9:37 hwscan hangs on USB2 disk - SCSI_IOCTL_SEND_COMMAND Bart Hartgers
2004-06-29  9:45 ` Kurt Garloff [this message]
2004-06-29 10:53   ` Steffen Winterfeldt
2004-06-29 11:45   ` Kurt Garloff
2004-06-30  9:37   ` hwscan hangs on USB2 disk - SCSI_IOCTL_SEND_COMMAND - SOLVED Bart Hartgers
2004-06-29  9:52 ` hwscan hangs on USB2 disk - SCSI_IOCTL_SEND_COMMAND Bart Hartgers

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=20040629094557.GR4732@tpkurt.garloff.de \
    --to=garloff@suse.de \
    --cc=bart@etpmod.phys.tue.nl \
    --cc=linux-kernel@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 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.