All of lore.kernel.org
 help / color / mirror / Atom feed
From: Felipe W Damasio <felipewd@terra.com.br>
To: Jens Axboe <axboe@suse.de>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: [PATCH] blk API update (and bug fix) to CDU535 cdrom driver
Date: Tue, 09 Sep 2003 14:50:36 -0300	[thread overview]
Message-ID: <3F5E12EC.6040502@terra.com.br> (raw)
In-Reply-To: <20030909153536.GH18257@suse.de>

[-- Attachment #1: Type: text/plain, Size: 1050 bytes --]

	Hi Jens,

Jens Axboe wrote:
> held! Ugh, and the request function do_cdu535_request calls
> schedule_timeout with the queue lock held (that is held when that
> function is entered), that is very buggy as well. Should also use
> set_current_state() right above that call, not open code it (that also
> misses a memory barrier). Same function also has problems with request
> handling. You should kill:
> 
> 	if (!(req->flags & REQ_CMD))
> 		continue;       /* FIXME */
> 
> that is very broken, make that:
> 
> 	if (!blk_fs_request(req)) {
> 		end_request(req, 0);
> 		continue;
> 	}
> 
> and kill these two lines:
> 
> 	if (rq_data_dir(req) != READ)
> 		panic("Unknown SONY CD cmd");
> 
> they are screwy too.
> 
> Care to fix the things I outlined above?

	This patch I think fixes all these, doesn't it?

	It applies on top of my latest cli-sti-removal patch that I sent you.

	The only place I'm not sure is on releasing the queue lock before 
calling schedule_timeout.

	Please apply if it looks good to you.

	Thanks for all your help!

Felipe

[-- Attachment #2: cdu535.patch --]
[-- Type: text/plain, Size: 1331 bytes --]

--- linux-2.6.0-test5/drivers/cdrom/sonycd535.c	Tue Sep  9 14:42:52 2003
+++ linux-2.6.0-test5-fwd/drivers/cdrom/sonycd535.c	Tue Sep  9 14:41:30 2003
@@ -812,14 +812,14 @@
 
 		block = req->sector;
 		nsect = req->nr_sectors;
-		if (!(req->flags & REQ_CMD))
-			continue;	/* FIXME */
+		if (!blk_fs_request(req)) {
+			end_request(req, 0);
+			continue;
+		}
 		if (rq_data_dir(req) == WRITE) {
 			end_request(req, 0);
 			continue;
 		}
-		if (rq_data_dir(req) != READ)
-			panic("Unknown SONY CD cmd");
 		/*
 		 * If the block address is invalid or the request goes beyond
 		 * the end of the media, return an error.
@@ -896,8 +896,10 @@
 					}
 					if (readStatus == BAD_STATUS) {
 						/* Sleep for a while, then retry */
-						current->state = TASK_INTERRUPTIBLE;
+						set_current_state(TASK_INTERRUPTIBLE);
+						spin_unlock_irq(&sonycd535_lock);
 						schedule_timeout(RETRY_FOR_BAD_STATUS*HZ/10);
+						spin_lock_irq(&sonycd535_lock);
 					}
 #if DEBUG > 0
 					printk(CDU535_MESSAGE_NAME
@@ -1481,7 +1483,7 @@
 	/* look for the CD-ROM, follows the procedure in the DOS driver */
 	inb(select_unit_reg);
 	/* wait for 40 18 Hz ticks (reverse-engineered from DOS driver) */
-	current->state = TASK_INTERRUPTIBLE;
+	set_current_state(TASK_INTERRUPTIBLE);
 	schedule_timeout((HZ+17)*40/18);
 	inb(result_reg);
 

       reply	other threads:[~2003-09-09 18:13 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <3F5DDEA8.6040901@terra.com.br>
     [not found] ` <20030909143341.GA18257@suse.de>
     [not found]   ` <3F5DEA0D.6030701@terra.com.br>
     [not found]     ` <20030909153536.GH18257@suse.de>
2003-09-09 17:50       ` Felipe W Damasio [this message]
2003-09-09 19:55         ` [PATCH] blk API update (and bug fix) to CDU535 cdrom driver Jens Axboe
2003-09-09 20:21           ` Felipe W Damasio
2003-09-10 19:58 Matthew Wilcox

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=3F5E12EC.6040502@terra.com.br \
    --to=felipewd@terra.com.br \
    --cc=axboe@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    /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.