Re: 2.5.33-bk testing

From: Linus Torvalds (torvalds@transmeta.com)
Date: Sun Sep 01 2002 - 00:24:58 EST


In article <Pine.LNX.4.44.0208312209240.1129-100000@dad.molina>,
Thomas Molina <tmolina@cox.net> wrote:
>
>I've beat on the floppy driver and it seems to work well. I haven't been
>able to make it hiccup yet.

Really? I was looking at my cleanups, and I'm fairly certain they are
buggy. I just pushed an update to the BK tree a few minutes ago that I
think should fix it, but since I'm not a floppy user myself I can only
go by the source and trying to imagine everything that could go wrong.

Anyway, can you please pull the floppy patch from BK or apply this patch
on top of clean 2.5.33 to see if it makes any difference?

[ Now, in all honesty this should _only_ make a difference in case the
  floppy request queue empties and another proces comes in and adds a
  new request while the previous one is pending, so the timing for the
  bug triggering is probably fairly interesting. Which may explain why
  you find the floppy driver solid even without this.

  Alternatively, I'm just full of crap, and this "fix" is bogus. In
  either case I'd like to know about it ;]

Thanks for testing,

                Linus

----
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/08/31	torvalds@home.transmeta.com	1.576
# De-queue the floppy request late, so that the higher levels
# know the floppy driver is busy.
# --------------------------------------------
#
diff -Nru a/drivers/block/floppy.c b/drivers/block/floppy.c
--- a/drivers/block/floppy.c	Sat Aug 31 22:25:41 2002
+++ b/drivers/block/floppy.c	Sat Aug 31 22:25:41 2002
@@ -2299,12 +2299,11 @@
 		return;
 	add_blkdev_randomness(major(dev));
 	floppy_off(DEVICE_NR(dev));
+	blkdev_dequeue_request(req);
 	end_that_request_last(req);
 
 	/* Get the next request */
 	req = elv_next_request(QUEUE);
-	if (req)
-		blkdev_dequeue_request(req);
 	CURRENT = req;
 }
 
@@ -2939,7 +2938,6 @@
 				unlock_fdc();
 				return;
 			}
-			blkdev_dequeue_request(req);
 			CURRENT = req;
 		}
 		if (major(CURRENT->rq_dev) != MAJOR_NR)

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sat Sep 07 2002 - 22:00:13 EST