From: Jens Axboe <axboe@suse.de>
To: Douglas Gilbert <dougg@torque.net>
Cc: linux-scsi@vger.kernel.org
Subject: Re: [2.5.69-bk8] block SCSI_IOCTL_SEND_COMMAND+SG_IO borken
Date: Wed, 14 May 2003 15:26:19 +0200 [thread overview]
Message-ID: <20030514132619.GM15261@suse.de> (raw)
In-Reply-To: <3EC22B56.9080800@torque.net>
On Wed, May 14 2003, Douglas Gilbert wrote:
> lk 2.5.68-bk8 seems a bit flaky with slab corruption
> (hopefully James and Mike have addressed that).
>
> One thing that fails all the time is trying to send
> SCSI_IOCTL_SEND_COMMAND or SG_IO ioctls through the
> block layer (i.e. code in drivers/block/scsi_ioctl.c).
> The only change in that file in bk8 is from me to
> fix sense buffer handling which is not being exercised
> in the failure case (e.g. simple commands like INQUIRY).
>
> The sym53c8xx driver seems to interpret commands from
> block layer as bus reset requests:
>
> sym0:1: ERROR (0:48) (c-2d-61) (3e/18/80) @ (scripta b00:14000000).
> sym0: script cmd = 88080000
> sym0: regdump: da 10 c0 18 47 3e 01 0e 00 0c 81 2d
> 80 01 0d 08 00 d4 48 1e 0a 00 00 00.
> sym0: SCSI BUS reset detected.
> sym0: SCSI BUS has been reset.
>
> Sending those two ioctls through the scsi mid-level
> works (e.g. 'sg_inq /dev/sda' fails while 'sg_inq /dev/sg0'
> works).
Known problem, fix attached.
===== drivers/block/scsi_ioctl.c 1.25 vs edited =====
--- 1.25/drivers/block/scsi_ioctl.c Tue Apr 29 13:41:31 2003
+++ edited/drivers/block/scsi_ioctl.c Wed May 14 10:22:25 2003
@@ -212,7 +212,7 @@
}
}
- rq = blk_get_request(q, WRITE, __GFP_WAIT);
+ rq = blk_get_request(q, writing ? WRITE : READ, __GFP_WAIT);
/*
* fill in request structure
@@ -227,8 +227,6 @@
rq->sense_len = 0;
rq->flags |= REQ_BLOCK_PC;
- if (writing)
- rq->flags |= REQ_RW;
rq->hard_nr_sectors = rq->nr_sectors = nr_sectors;
rq->hard_cur_sectors = rq->current_nr_sectors = nr_sectors;
@@ -329,7 +327,7 @@
memset(buffer, 0, bytes);
}
- rq = blk_get_request(q, WRITE, __GFP_WAIT);
+ rq = blk_get_request(q, in_len ? WRITE : READ, __GFP_WAIT);
cmdlen = COMMAND_SIZE(opcode);
@@ -373,8 +371,6 @@
rq->data = buffer;
rq->data_len = bytes;
rq->flags |= REQ_BLOCK_PC;
- if (in_len)
- rq->flags |= REQ_RW;
blk_do_rq(q, bdev, rq);
err = rq->errors & 0xff; /* only 8 bit SCSI status */
--
Jens Axboe
prev parent reply other threads:[~2003-05-14 13:13 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-05-14 11:41 [2.5.69-bk8] block SCSI_IOCTL_SEND_COMMAND+SG_IO borken Douglas Gilbert
2003-05-14 13:26 ` Jens Axboe [this message]
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=20030514132619.GM15261@suse.de \
--to=axboe@suse.de \
--cc=dougg@torque.net \
--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