On Thu, Sep 27, 2007 at 11:32:36PM -0700, Chakri n wrote:Peter, do you think this patch will help? === writeback: avoid possible balance_dirty_pages() lockup on light-load bdi On a busy-writing system, a writer could be hold up infinitely on a light-load device. It will be trying to sync more than enough dirty data. The problem case: 0. sda/nr_dirty >= dirty_limit; sdb/nr_dirty == 0 1. dd writes 32 pages on sdb 2. balance_dirty_pages() blocks dd, and tries to write 6MB. 3. it never gets there: there's only 128KB dirty data. 4. dd may be blocked for a loooong time as long as sda is overloaded Fix it by returning on 'zero dirty inodes' in the current bdi. (In fact there are slight differences between 'dirty inodes' and 'dirty pages'. But there is no available counters for 'dirty pages'.) Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Signed-off-by: Fengguang Wu <wfg@mail.ustc.edu.cn> --- mm/page-writeback.c | 3 +++ 1 file changed, 3 insertions(+) --- linux-2.6.22.orig/mm/page-writeback.c +++ linux-2.6.22/mm/page-writeback.c @@ -227,6 +227,9 @@ static void balance_dirty_pages(struct a if (nr_reclaimable + global_page_state(NR_WRITEBACK) <= dirty_thresh) break; + if (list_empty(&mapping->host->i_sb->s_dirty) && + list_empty(&mapping->host->i_sb->s_io)) + break; if (!dirty_exceeded) dirty_exceeded = 1; -
| Greg KH | [RFC] sample kobject implementation |
| Greg Kroah-Hartman | [PATCH 001/196] Chinese: Add the known_regression URI to the HOWTO |
| Paul E. McKenney | [PATCH RFC 2/9] RCU: Fix barriers |
| Joe Perches | [PATCH 011/148] include/asm-x86/bug.h: checkpatch cleanups - formatting only |
git: | |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Gerrit Renker | [PATCH 15/37] dccp: Set per-connection CCIDs via socket options |
| Linus Torvalds | Re: [GIT]: Networking |
| Jeff Garzik | Re: [PATCH] drivers/net: remove network drivers' last few uses of IRQF_SAMPLE_RANDOM |
