2.5.44-ac4 scsi CDROMEJECT problem

2.5.44-ac4 scsi CDROMEJECT problem

Post by Nyk Tar » Tue, 29 Oct 2002 00:40:07



Hi

This patch of Jens Axboe was missing from 2.5.44-ac4. Was this by design
or accidental?

Quote:> 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.

--- drivers/block/scsi_ioctl.c~ 2002-10-25 16:46:58.000000000 +0200

                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;

Quote:> --
> Jens Axboe

--
/__
\_|\/
   /\
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in

More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
 
 
 

2.5.44-ac4 scsi CDROMEJECT problem

Post by Jens Axbo » Tue, 29 Oct 2002 10:20:09



> 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?

--
Jens Axboe

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in

More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

 
 
 

2.5.44-ac4 scsi CDROMEJECT problem

Post by Nyk Tar » Tue, 29 Oct 2002 13:00:11




> > 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.

Thanks
--
/__
\_|\/
   /\
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in

More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

 
 
 

2.5.44-ac4 scsi CDROMEJECT problem

Post by Jens Axbo » Tue, 29 Oct 2002 13:10:04





> > > 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

 #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

        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;

         * 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;

                        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

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in

More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

 
 
 

2.5.44-ac4 scsi CDROMEJECT problem

Post by Nyk Tar » Tue, 29 Oct 2002 13:50:08






> > > > 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:

[snip]

> 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
--
/__
\_|\/
   /\
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in

More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/