Re: [patch 16/16] block/ps2esdi: replace sleep_on() with wait_event()

Andrew Morton
2005-08-09T06:16:16Z

domen@coderock.org wrote:
>
> Use wait_event() instead of the deprecated sleep_on(). In all
> replacements, wait_event() expects the condition to *stop* on, so the existing
> conditional is negated and passed as the parameter. I am not sure if these
> changes are appropriate, as the condition to pass to wait_event() to guarantee
> the same behavior; I think this is the best choice, though.
>
> Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com>
> Signed-off-by: Domen Puncer <domen@coderock.org>
> ---
> ps2esdi.c | 7 +++----
> 1 files changed, 3 insertions(+), 4 deletions(-)
>
> Index: quilt/drivers/block/ps2esdi.c
> ===================================================================
> --- quilt.orig/drivers/block/ps2esdi.c
> +++ quilt/drivers/block/ps2esdi.c
> @@ -43,6 +43,7 @@
> #include <linux/init.h>
> #include <linux/ioport.h>
> #include <linux/module.h>
> +#include <linux/delay.h>
>
> #include <asm/system.h>
> #include <asm/io.h>
> @@ -461,8 +462,7 @@ static void __init ps2esdi_get_device_cf
> cmd_blk[1] = 0;
> no_int_yet = TRUE;
> ps2esdi_out_cmd_blk(cmd_blk);
> - if (no_int_yet)
> - sleep_on(&ps2esdi_int);
> + wait_event(ps2esdi_int, !no_int_yet);
>
> if (ps2esdi_drives > 1) {
> printk("%s: Drive 1\n", DEVICE_NAME); /*BA */
> @@ -470,8 +470,7 @@ static void __init ps2esdi_get_device_cf
> cmd_blk[1] = 0;
> no_int_yet = TRUE;
> ps2esdi_out_cmd_blk(cmd_blk);
> - if (no_int_yet)
> - sleep_on(&ps2esdi_int);
> + wait_event(ps2esdi_int, !no_int_yet);
> } /* if second physical drive is present */
> return;
> }

hm, what a racy driver.

wake_up(&ps2esdi_int);
no_int_yet = FALSE;

these should be in the other order, no?

Anyway, I think I'll duck this patch until someone can say "it works".