public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
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


      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