Re: long boot delays caused by 070ad7e7 floppy change

From: Calvin Walton
Date: Tue Jul 03 2012 - 15:36:39 EST


On Tue, 2012-07-03 at 12:12 -0700, Linus Torvalds wrote:
> What happens if you add a
>
> cancel_delayed_work(&fd_timeout);
>
> to before the queue_delayed_work() in __reschedule_timeout()? Does
> that possibly make the delay really be 3 seconds?

Yes, it does...
[ 0.718571] floppy0: reschedule timeout lock fdc
[ 1.650956] Refined TSC clocksource calibration: 2698.760 MHz.
[ 1.651109] Switching to clocksource tsc
[ 3.724664] floppy0: reschedule timeout do wakeup
[ 3.724815] floppy0: no floppy controllers found

diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c
index cce7df3..c8064e4 100644
--- a/drivers/block/floppy.c
+++ b/drivers/block/floppy.c
@@ -678,6 +678,8 @@ static void __reschedule_timeout(int drive, const char *message)
} else
delay = UDP->timeout;

+ cancel_delayed_work(&fd_timeout);
+
queue_delayed_work(floppy_wq, &fd_timeout, delay);
if (UDP->flags & FD_DEBUG)
DPRINT("reschedule timeout %s\n", message);

Of course, a 3 second delay at this point in boot is still a fairly big
bit of waiting, given how fast everything else is nowadays.

--
Calvin Walton <calvin.walton@xxxxxxxxxx>

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