
From: Nick Piggin <piggin@cyberone.com.au>

It converts writes to reads and we end up returning the request to the wrong
queue.



 drivers/block/scsi_ioctl.c |    2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)

diff -puN drivers/block/scsi_ioctl.c~cdrom-eject-hang-fix drivers/block/scsi_ioctl.c
--- 25/drivers/block/scsi_ioctl.c~cdrom-eject-hang-fix	2003-06-27 18:18:29.000000000 -0700
+++ 25-akpm/drivers/block/scsi_ioctl.c	2003-06-27 18:18:29.000000000 -0700
@@ -450,7 +450,7 @@ int scsi_cmd_ioctl(struct block_device *
 			close = 1;
 		case CDROMEJECT:
 			rq = blk_get_request(q, WRITE, __GFP_WAIT);
-			rq->flags = REQ_BLOCK_PC;
+			rq->flags |= REQ_BLOCK_PC;
 			rq->data = NULL;
 			rq->data_len = 0;
 			rq->timeout = BLK_DEFAULT_TIMEOUT;

_
