From: Stephen Rothwell <sfr@canb.auug.org.au>

This patch stops an oops caused by certain ioctls being performed on the
virtual cdrom.  In particular, the eject and tray close operations were
affected.


---

 25-akpm/drivers/cdrom/viocd.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff -puN drivers/cdrom/viocd.c~ppc64-iseries-virtual-cd-fix drivers/cdrom/viocd.c
--- 25/drivers/cdrom/viocd.c~ppc64-iseries-virtual-cd-fix	2004-03-23 02:05:25.378245416 -0800
+++ 25-akpm/drivers/cdrom/viocd.c	2004-03-23 02:05:25.380245112 -0800
@@ -338,8 +338,9 @@ static void do_viocd_request(request_que
 	struct request *req;
 
 	while ((rwreq == 0) && ((req = elv_next_request(q)) != NULL)) {
-		/* check for any kind of error */
-		if (send_request(req) < 0) {
+		if (!blk_fs_request(req))
+			end_request(req, 0);
+		else if (send_request(req) < 0) {
 			printk(VIOCD_KERN_WARNING
 					"unable to send message to OS/400!");
 			end_request(req, 0);

_