lkml.org 
[lkml]   [1999]   [Aug]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    SubjectRe: kupdate & laptop's [patch for integration of mobile-update]
    Date
    > Yes, you need a:
    >
    > echo 40 500 64 256 0 >/proc/sys/vm/bdflush
    >
    > to disable kupdate. Then it will go to sleep.
    >
    > To reenable kupdate you need to:
    >
    > echo 40 500 64 256 500 >/proc/sys/vm/bdflush
    >
    > and _then_ send it a SIGCONT. (note on Alpha the second 500 has to be
    > close to 5000 since HZ is 1024 there)

    Maybe a better fix would be to integrate mobile-update in 'kupdate'?
    I've attached a possible patch to fs/buffer.c below. The idea is based
    on mobile-update, but I simplified it a bit and it checks for activity
    on all IDE(?) disks. I don't know how to make it a compile option,
    yet. Maybe it would be even better to activate mobile-update only if
    running on battery? Anyway, the patch seems to work for me.

    Cheers, Peter.

    --- buffer.c.ORIGINAL Sat Aug 14 14:08:07 1999
    +++ buffer.c Sat Aug 14 15:21:35 1999
    @@ -1,3 +1,4 @@
    +#define MOBILE_UPDATE
    /*
    * linux/fs/buffer.c
    *
    @@ -37,6 +38,10 @@
    #include <linux/init.h>
    #include <linux/quotaops.h>

    +#ifdef MOBILE_UPDATE
    +#include <linux/kernel_stat.h>
    +#endif
    +
    #include <asm/uaccess.h>
    #include <asm/io.h>
    #include <asm/bitops.h>
    @@ -1837,6 +1842,10 @@
    {
    struct task_struct * tsk = current;
    int interval;
    +#ifdef MOBILE_UPDATE
    + int dsk, activity;
    + static unsigned int disk_activity[DK_NDRIVE];
    +#endif

    tsk->session = 1;
    tsk->pgrp = 1;
    @@ -1862,6 +1871,32 @@
    #ifdef DEBUG
    printk("kupdate() activated...\n");
    #endif
    +#ifdef MOBILE_UPDATE
    + /* Find out if there was any disk activity */
    + activity=0;
    + for (dsk=0; dsk<DK_NDRIVE; dsk++)
    + activity |= kstat.dk_drive[dsk] != disk_activity[dsk];
    +
    + /* If there was activity, or if it is the first call,
    + * call sync_old_buffers()
    + */
    + if (activity || disk_activity[0] == 0)
    + {
    +#ifdef DEBUG
    + printk("kmobile-update calls sync\n");
    +#endif
    + sync_old_buffers();
    +
    + /* remember disk status for next call */
    + for (dsk=0; dsk<DK_NDRIVE; dsk++)
    + disk_activity[dsk] = kstat.dk_drive[dsk];
    + }
    +#ifdef DEBUG
    + else
    + printk("kmobile-update ignores sync()\n");
    +#endif
    +#else
    sync_old_buffers();
    +#endif
    }
    }
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.rutgers.edu
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 13:53    [W:4.030 / U:0.456 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site