Skip to content
  1. Nov 17, 2011
    • Wu Fengguang's avatar
      writeback: remove vm_dirties and task->dirties · 468e6a20
      Wu Fengguang authored
      
      
      They are not used any more.
      
      Signed-off-by: default avatarWu Fengguang <fengguang.wu@intel.com>
      468e6a20
    • Wu Fengguang's avatar
      writeback: hard throttle 1000+ dd on a slow USB stick · 1df64719
      Wu Fengguang authored
      
      
      The sleep based balance_dirty_pages() can pause at most MAX_PAUSE=200ms
      on every 1 4KB-page, which means it cannot throttle a task under
      4KB/200ms=20KB/s. So when there are more than 512 dd writing to a
      10MB/s USB stick, its bdi dirty pages could grow out of control.
      
      Even if we can increase MAX_PAUSE, the minimal (task_ratelimit = 1)
      means a limit of 4KB/s.
                                                             
      They can eventually be safeguarded by the global limit check 
      (nr_dirty < dirty_thresh). However if someone is also writing to an 
      HDD at the same time, it'll get poor HDD write performance.
                                                             
      We at least want to maintain good write performance for other devices
      when one device is attacked by some "massive parallel" workload, or
      suffers from slow write bandwidth, or somehow get stalled due to some 
      error condition (eg. NFS server not responding).
      
      For a stalled device, we need to completely block its dirtiers, too,
      before its bdi dirty pages grow all the way up to the global limit and
      leave no space for the other functional devices.
      
      So change the loop exit condition to
      
      	/*
      	 * Always enforce global dirty limit; also enforce bdi dirty limit
      	 * if the normal max_pause sleeps cannot keep things under control.
      	 */
      	if (nr_dirty < dirty_thresh &&
      	    (bdi_dirty < bdi_thresh || bdi->dirty_ratelimit > 1))
      		break;
      
      which can be further simplified to
      
      	if (task_ratelimit)
      		break;
      
      Signed-off-by: default avatarWu Fengguang <fengguang.wu@intel.com>
      1df64719
  2. Nov 16, 2011
  3. Nov 15, 2011
    • Liu Gang's avatar
      fsl-rio: fix compile error · e0ce42e1
      Liu Gang authored
      
      
      The "#include <linux/module.h>" was replaced by "#include <linux/export.h>"
      in the patch "powerpc: various straight conversions from module.h --> export.h".
      This will cause the following compile problem:
      arch/powerpc/sysdev/fsl_rio.c: In function 'fsl_rio_mcheck_exception':
      arch/powerpc/sysdev/fsl_rio.c:296: error: implicit declaration of function 'search_exception_tables'.
      
      The file fsl_rio.c needs the declaration of function "search_exception_tables"
      in the header file "linux/module.h".
      
      Signed-off-by: default avatarLiu Gang <Gang.Liu@freescale.com>
      Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
      e0ce42e1
  4. Nov 14, 2011