Man Linux: Main Page and Category List


       noflushd - userland daemon to spin down idle disks.


       noflushd -[dhirtvV] [<optargs>] [<disk>] [ -t <optargs> ] [ <disks> ...


       noflushd monitors disk activity and spins down <disk>s that  have  been
       idle  for  a  certain  amount of time.  The <disk> argument has to be a
       device node to a raw disk like, e. g.  /dev/hda.   It  must  not  be  a
       device node to a partition inside the disk, e. g. /dev/hda1.  Unless at
       least one <disk> argument is given, noflushd tries to monitor all disks
       on  the  system as listed in /proc/partitions using the default timeout
       list.  Some of the options take additional  arguments  <optargs>.   See
       below for a complete list.

       noflushd  actually  used to live in some versions of bdflush, but since
       kernel version 2.2.11, bdflush had  been  completely  replaced  by  the
       kernel-level  kupdate  daemon,  which  was  renamed  into kupdated, and
       finally replaced again by the pdflush daemon in the  Linux  2.5  kernel


       -h   Print the usage message (help).

       -v   Print   information   on   monitored   disks  upon  startup.   Log
            information about events such as disk spinup to syslog.   Combined
            with -d option, produce extra verbose debugging messages.

       -d   Don’t detach daemon.  Print additional debugging information.

       -V   Display version information.

       -r <disk>
            Mark  <disk>  as  read-only,  meaning  that  noflushd will make no
            attempt to sync <disk>  even  if  it’s  still  spinning.   Usually
            you’ll  need this option for CD-ROMs or other read-only media that
            are reported in /proc/partitions.  (noflushd detects  IDE  CD-ROMs
            itself.   SCSI  CD-ROMs  aren’t listed in /proc/partitions so just
            assume you don’t need this option for a start.)

       -n <timeout-list>
            Set default timeouts.  Can be overridden for a single  disk  using
            the -t option.  See below for how to specify the timeout values.

       -t <timeout-list>
            Send  disk to sleep after timeout minutes have passed without read
            activity.  Unlike -n, this option only applies to the next  <disk>
            argument  following  on  the  command-line.   See below for how to
            specify the timeout values.

            A <timeout-list> comprises of one or more comma-separated  integer
            values indicating a timeout value in minutes.  Usually you’ll only
            supply a single value and ignore the rest of this  section.   Read
            on however if you want to pass several configurations to noflushd.
            Upon startup, noflushd uses the first timeout value of each  list.
            When  a SIGHUP signal is sent to noflushd, it switches to the next
            set of timeout values in the list, or jumps back to the first,  if
            the  end  of  the  list  was  reached.   This  is  different  from
            restarting the daemon with a new set  of  parameters  because  the
            idle  times  for each disk are preserved.  You can make use of two
            special timeout values with the -t  option.   -1  or  the  keyword
            "default"  uses  the  current  default  timeout.  0 or the keyword
            "skip" advises noflushd to skip monitoring the particular disk  in
            this   set   of  parameters.   Different  timeout-lists  may  have
            different numbers of entries, but this is probably not very useful
            at  all.   Nevertheless it is considered a feature, not a bug.  It
            is considered a bug however  that  this  description  is  far  too

       -i <irq list>
            Monitor  interrupts  for interactivity.  If one or more interrupts
            are raised within the default timeout, disks won’t get spun  down.
            Interrupts  are  given as a comma-separated list of either numbers
            or names as in /proc/interrupts.   You  can  use  this  option  to
            prevent   spindown   when  the  machine  is  in  interactive  use.
            Keyboard, and mouse interrupts are good candidates to  monitor  in
            this case.

            Enable  support  for SCSI disks.  The name of this option is gross
            for a reason: Unless your running kernel has the  scsi-idle  patch
            applied,  once  spun  down,  SCSI disks will not spin up again, no
            matter if noflushd is running or not.  (You might still be able to
            trigger  a manual spinup, but by Murphy’s Law the program to do so
            resides on the spun-down disk.) Furthermore, the  scsi-idle  patch
            is  rumored  to  be  buggy on multi-processor systems. Some people
            have even blamed scsi-idle as the cause of occasional data loss on
            their  disks.  In other words, by enabling this option, you assert
            that you know what you’re doing, and that you won’t get at  me  if
            it  turns  out  that in fact you didn’t.  More information on SCSI
            support and the  scsi-idle  patch  is  provided  in  the  noflushd
            README,  and  in  the  contrib  directory  of  the noflushd source


noflushd -n 60 /dev/hda’
            This is the recommended commandline for  the  most  common  laptop
            setup:  one  IDE hard disk, optionally one IDE CD-ROM.  The CD-ROM
            is auto-detected as a read-only drive.  Usually CD-ROM drives spin
            down  themselves,  so  they should not be given on the commandline
            for noflushd to monitor.

       ’noflushd -r /dev/sdb -n 60,5 /dev/hda -t 15,default /dev/hdc’
            Here noflushd is told about a read-only device at /dev/sdb (e.g. a
            magneto-optical  drive  mounted  read-only).   noflushd needs this
            information to decide what disks to sync and  when  to  start/stop
            kupdated/pdflush.   Next,  two sets of timeout values are defined:
            First a 1 hour timeout for the first hard disk, and  a  15  minute
            timeout  for  the  second  hard disk.  Then a 5 minute timeout for
            both the first and  the  second  hard  disk.   Sending  SIGHUP  to
            noflushd will toggle between both parameter sets.

       ’noflushd -i keyboard,"PS/2 Mouse" -n 5 -t 60 /dev/hda’
            Spin  down  the  first  IDE  disk  after one hour, but only if the
            machine hasn’t been used interactively in the past five minutes.


       When running a devfs-enabled kernel, noflushd won’t work  unless  devfs
       is  mounted.   Devfs need not be used, or mounted on /dev, but it needs
       to be mounted somewhere.  That’s because the kernel  exposes  different
       device  names  in /proc/partitions, depending whether devfs is compiled
       in or not.

       Kernels prior to version 2.3.99pre8 will only provide  disk  statistics
       for  the  first and second IDE controller.  Thus noflushd can’t support
       any more.  Improvements in later kernels curiously enough led  to  also
       the second IDE controller not being supported anymore by default.  It’s
       a kernel limitation, not a noflushd bug.  If noflushd refuses  to  work
       with  your  UDMA-100  IDE  disks, this is most likely the cause.  Check
       noflushd’s README in the doc section for information on how  to  change

       As  if  this  hadn’t  been  enough,  2.4.0-test9 changed the /proc/stat
       layout once again. Current versions of noflushd only  support  the  new
       format,  meaning  that  noflushd  won’t  run  on  kernels 2.3.99pre8 to
       2.4.0-test8.  Please consider upgrading.


       Heavy swap activity and spun down  disks  upon  APM  suspend  sometimes
       leave syslogd stuck in ’D’ state after resuming. This is probably not a
       noflushd bug but a kernel bug that can be triggered with  the  help  of
       noflushd.   The  best known workaround is to put a line sync && sync &&
       sync in apmd’s suspend script.

       Remounting a partition from read-only to  read-write  while  noflushd’s
       internal  syncer  is active will go unnoticed, i.e. no sync will occur.
       (This should be extremely rare - it requires that not  only  were  e.g.
       /dev/hda{1,2...}  all  read-only  before, but also the full disk device
       /dev/hda. A filesystem on an unpartitioned disk is  probably  the  only
       real-world case where this bug might trigger.)

       Journaling  filesystems  like  ext3,  or  reiserfs  bypass the kernel’s
       delayed  write  mechanisms  and  write  straight  to  disk.   Therefore
       noflushd  is  unable  to  postpone  writing  of  journaling data.  As a
       result,   expect   lousy   spindown   behaviour   when   working    off
       ext3/reiserfs/... partitions.

       Handling  of  hotplugged  drives  is well below the optimum, especially
       when removable drives like card readers are plugged in.  Until noflushd
       becomes  more  clever  about  them,  it is recommended to intelligently
       restart it from the hotplug daemon (e.g. hotplug or usbmgr) as soon  as
       a new drive is added or removed.  Option -r might come in handy for the
       hotplugged disk.

       Some  of  the  early  2.4  kernels  apparently  do  not  properly  reap
       noflushd’s  starting  process  after  it has forked off the daemon: The
       entries in /proc/<pid>/ are still around, but the pid doesn’t  show  up
       anymore  in  the  directory contents of /proc/.  Which means chkrootkit
       reports noflushd as a hidden process.  This bug is just so  weird.   To
       daemonize  itself, noflushd uses a standard libc call, and there are no
       tricks in the source  that  should  be  able  to  confuse  the  kernel.
       Current  kernels  for  all I know don’t exhibit this behaviour anymore.
       Still why exactly noflushd triggered this bug remains a mystery.


       noflushd was written  by  Daniel  Kobras  <>,  based  on
       bdflush’s  sleep  support.  bdflush was written as a quick hack by Eric
       Youngdale <>  with  various  other  hacks  by  Phil
       Bostley      <>      and      Daniel     Quinlan
       <>.  Sleep support was added to bdflush  by  Pavel
       Machek <>.

                           Version 2.7.4 - Aug 2004                noflushd(8)