On Thu, 05 Apr 2007 19:42:21 +0200 [EMAIL PROTECTED] wrote: > Now that we have per BDI dirty throttling is makes sense to also have oer BDI > congestion feedback; why wait on another device if the current one is not > congested.
Similar comments apply. congestion_wait() should be called throttle_at_a_rate_proportional_to_the_speed_of_presently_uncongested_queues(). If a process is throttled in the page allocator waiting for pages to become reclaimable, that process absolutely does not care whether those pages were previously dirty against /dev/sda or against /dev/sdb. It wants to be woken up for writeout completion against any queue. - wbc.encountered_congestion = 0; + wbc.encountered_congestion = NULL; wbc.nr_to_write = MAX_WRITEBACK_PAGES; wbc.pages_skipped = 0; writeback_inodes(&wbc); min_pages -= MAX_WRITEBACK_PAGES - wbc.nr_to_write; if (wbc.nr_to_write > 0 || wbc.pages_skipped > 0) { /* Wrote less than expected */ - congestion_wait(WRITE, HZ/10); - if (!wbc.encountered_congestion) + if (wbc.encountered_congestion) + congestion_wait(wbc.encountered_congestion, + WRITE, HZ/10); + else Well that confused me. You'd be needing to rename wbc.encountered_congestion to congested_bdi or something. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/