Re: RFC - how to balance Dirty+Writeback in the face of slow writeback.

Nikita Danilov
2006-08-18T10:48:49Z

Andrew Morton writes:

[...]

>
> The way this code all works is pretty crude and simple: a process comes
> in to to some writeback and it enters a polling loop:
>
> while (we need to do writeback) {
> for (each superblock) {
> if (the superblock's backing_dev isn't congested) {
> stuff some more IO down it()
> }
> }
> take_a_nap();
> }
>
> so the process remains captured in that polling loop until the
> dirty-memory-exceed condition subsides. The reason why we avoid

Hm... wbc->nr_to_write is checked all the way down
(balance_dirty_pages(), writeback_inodes(), sync_sb_inodes(),
mpage_writepages()), so "occasional writer" cannot be stuck for more
than 32 + 16 pages, it seems.

Nikita.