Re: swsusp: progress in percent

From: Tonnerre
Date: Sat Sep 11 2004 - 08:07:36 EST


Salut,

On Fri, Sep 10, 2004 at 10:47:04AM +0200, Pavel Machek wrote:
> --- clean-mm/kernel/power/disk.c 2004-09-07 21:12:33.000000000 +0200
> +++ linux-mm/kernel/power/disk.c 2004-09-08 22:47:41.000000000 +0200
> @@ -91,10 +91,20 @@
>
> static void free_some_memory(void)
> {
> - printk("Freeing memory: ");
> - while (shrink_all_memory(10000))
> - printk(".");
> - printk("|\n");
> + unsigned int i = 0;
> + unsigned int tmp;
> + unsigned long pages = 0;
> + char *p = "-\\|/";
> +
> + printk("Freeing memory... ");
> + while ((tmp = shrink_all_memory(10000))) {
> + pages += tmp;
printk("\b%c", p[(i++)%4]); ?
> + }
> + printk("\bdone (%li pages freed)\n", pages);
> }
>
>
> --- clean-mm/kernel/power/swsusp.c 2004-09-07 21:12:33.000000000 +0200
> +++ linux-mm/kernel/power/swsusp.c 2004-09-09 08:56:20.000000000 +0200
> @@ -296,15 +292,19 @@
> {
> int error = 0;
> int i;
> -
> - printk( "Writing data to swap (%d pages): ", nr_copy_pages );
> + unsigned int mod = nr_copy_pages / 100;
> +
> + if (!mod)
> + mod = 1;
> +
> + printk( "Writing data to swap (%d pages)... ", nr_copy_pages );
> for (i = 0; i < nr_copy_pages && !error; i++) {
> - if (!(i%100))
> - printk( "." );
> + if (!(i%mod))
> + printk( "\b\b\b\b%3d%%", i / mod );
> error = write_page((pagedir_nosave+i)->address,
> &((pagedir_nosave+i)->swap_address));
> }
> - printk(" %d Pages done.\n",i);
> + printk("\b\b\b\bdone\n");

Didn't we say we want the page count here?

> return error;
> }
>
> @@ -1153,14 +1120,18 @@
> struct pbe * p;
> int error;
> int i;
> -
> + int mod = nr_copy_pages / 100;
> +
> + if (!mod)
> + mod = 1;
> +
> if ((error = swsusp_pagedir_relocate()))
> return error;
>
> - printk( "Reading image data (%d pages): ", nr_copy_pages );
> + printk( "Reading image data (%d pages): ", nr_copy_pages );
> for(i = 0, p = pagedir_nosave; i < nr_copy_pages && !error; i++, p++) {
> - if (!(i%100))
> - printk( "." );
> + if (!(i%mod))
> + printk( "\b\b\b\b%3d%%", i / mod );
> error = bio_read_page(swp_offset(p->swap_address),
> (void *)p->address);
> }
>
>

Thanks for enlightenment.

Tonnerre

Attachment: signature.asc
Description: Digital signature