2.5.44-ac4 scsi CDROMEJECT problem
Hi
This patch of Jens Axboe was missing from 2.5.44-ac4. Was this by design or accidental?
Quoted 2 lines
Irk you are on SCSI, yes you need this incremental patch for that to work. Sorry about that, I've put up 16b which contains this.
block/scsi_ioctl.c renamed from block/scsi_ioctl.c~ +2 -0
@@ -319,6 +319,8 @@case CDROMEJECT : rq =blk_get_request (q,WRITE , __GFP_WAIT); rq->flags =REQ_BLOCK_PC ; + rq->rq_dev =to_kdev_t (bdev->bd_dev); + rq->rq_disk = bdev->bd_disk; rq->data =NULL ; rq->data_len =0 ; rq->timeout =BLK_DEFAULT_TIMEOUT ;
Quoted 2 lines
Signature · 1 line
Jens Axboe
Signature · 3 lines
/__ \_|\/ /\
Quoted 4 lines · Nyk Tarr
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?
Signature · 1 line
Jens Axboe
Quoted 8 lines · Jens Axboe
Quoted 4 lines · Nyk Tarr
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 setsrq_devandrq_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.
Thanks
Signature · 3 lines
/__ \_|\/ /\
Quoted 10 lines · Nyk Tarr
Quoted 8 lines · Jens Axboe
Quoted 4 lines · Nyk Tarr
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 setsrq_devandrq_disk. So it's indeed intentional. Since you ask, do you have problems ejecting?
Quoted 6 lines
Yup.
I can only see rq ->
rq_devbeing set insg_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:
block/scsi_ioctl.c renamed from block/scsi_ioctl.c~ +6 -6
@@ -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.
Signature · 1 line
Jens Axboe
Quoted 21 lines · Jens Axboe
Quoted 10 lines · Nyk Tarr
Quoted 8 lines · Jens Axboe
Quoted 4 lines · Nyk Tarr
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 setsrq_devandrq_disk. So it's indeed intentional. Since you ask, do you have problems ejecting?Quoted 6 lines
Yup.
I can only see rq ->
rq_devbeing set insg_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:
[snip]
Quoted 3 lines
I think Alan dropped this last bit (or maybe it didn't apply for him, dunno), at least I know it was sent.
Applies clean here. I'll try it later.
Thanks.
Nyk
Signature · 3 lines
/__ \_|\/ /\