From: Jens Axboe <axboe@suse.de>
To: Nyk Tarr <nyk@giantx.co.uk>
Cc: linux-kernel@vger.kernel.org, Alan Cox <alan@lxorguk.ukuu.org.uk>
Subject: Re: 2.5.44-ac4 scsi CDROMEJECT problem
Date: Mon, 28 Oct 2002 11:57:54 +0100 [thread overview]
Message-ID: <20021028105754.GB844@suse.de> (raw)
In-Reply-To: <20021028105433.GA18585@giantx.co.uk>
On Mon, Oct 28 2002, Nyk Tarr wrote:
> On Mon, Oct 28, 2002 at 09:15:07AM +0100, Jens Axboe wrote:
> > On Sun, Oct 27 2002, Nyk Tarr wrote:
> > > Hi
> > >
> > > This patch of Jens Axboe was missing from 2.5.44-ac4. Was this by design
> > > or accidental?
> >
> > Please check blk_do_rq(), it sets rq_dev and rq_disk. So it's indeed
> > intentional. Since you ask, do you have problems ejecting?
>
> Yup.
>
> I can only see rq -> rq_dev being set in sg_io(), but then again, you
> could write the amount of C I know on a small postage stamp. ^_^
>
> recompiled with the two assignments in under CDROMEJECT it works fine.
I just checked the -ac4 patch, and bits are indeed missing. The
recommended patch against -ac4 is:
--- drivers/block/scsi_ioctl.c~ 2002-10-25 19:00:11.000000000 +0200
+++ drivers/block/scsi_ioctl.c 2002-10-25 19:01:15.000000000 +0200
@@ -37,11 +37,14 @@
#define BLK_DEFAULT_TIMEOUT (60 * HZ)
-int blk_do_rq(request_queue_t *q, struct request *rq)
+int blk_do_rq(request_queue_t *q, struct block_device *bdev, struct request *rq)
{
DECLARE_COMPLETION(wait);
int err = 0;
+ rq->rq_dev = to_kdev_t(bdev->bd_dev);
+ rq->rq_disk = bdev->bd_disk;
+
/*
* we need an extra reference to the request, so we can look at
* it after io completion
@@ -221,9 +224,6 @@
if (writing)
rq->flags |= REQ_RW;
- rq->rq_dev = to_kdev_t(bdev->bd_dev);
- rq->rq_disk = bdev->bd_disk;
-
rq->hard_nr_sectors = rq->nr_sectors = nr_sectors;
rq->hard_cur_sectors = rq->current_nr_sectors = nr_sectors;
@@ -253,7 +253,7 @@
* return -EIO if we didn't transfer all data, caller can look at
* residual count to find out how much did succeed
*/
- err = blk_do_rq(q, rq);
+ err = blk_do_rq(q, bdev, rq);
if (rq->data_len > 0)
err = -EIO;
@@ -325,7 +325,7 @@
memset(rq->cmd, 0, sizeof(rq->cmd));
rq->cmd[0] = GPCMD_START_STOP_UNIT;
rq->cmd[4] = 0x02 + (close != 0);
- err = blk_do_rq(q, rq);
+ err = blk_do_rq(q, bdev, rq);
blk_put_request(rq);
break;
default:
I think Alan dropped this last bit (or maybe it didn't apply for him,
dunno), at least I know it was sent.
--
Jens Axboe
next prev parent reply other threads:[~2002-10-28 10:52 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-10-27 22:31 2.5.44-ac4 scsi CDROMEJECT problem Nyk Tarr
2002-10-28 8:15 ` Jens Axboe
2002-10-28 10:54 ` Nyk Tarr
2002-10-28 10:57 ` Jens Axboe [this message]
2002-10-28 11:41 ` Nyk Tarr
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=20021028105754.GB844@suse.de \
--to=axboe@suse.de \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=nyk@giantx.co.uk \
/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.