Re: [PATCH 0/5] [RFC] transfer ASYNC vmscan writeback IO to the flusher threads

Jan Kara
2010-07-29T16:09:47Z

On Thu 29-07-10 19:51:42, Wu Fengguang wrote:
> Andrew,
>
> It's possible to transfer ASYNC vmscan writeback IOs to the flusher threads.
> This simple patchset shows the basic idea. Since it's a big behavior change,
> there are inevitably lots of details to sort out. I don't know where it will
> go after tests and discussions, so the patches are intentionally kept simple.
>
> sync livelock avoidance (need more to be complete, but this is minimal required for the last two patches)
> [PATCH 1/5] writeback: introduce wbc.for_sync to cover the two sync stages
> [PATCH 2/5] writeback: stop periodic/background work on seeing sync works
> [PATCH 3/5] writeback: prevent sync livelock with the sync_after timestamp
Well, essentially any WB_SYNC_NONE writeback is still livelockable if you
just grow a file constantly. So your changes are a step in the right
direction but won't fix the issue completely. But what we could do to fix
the issue completely would be to just set wbc->nr_to_write to LONG_MAX
before writing inode for sync use my livelock avoidance using page-tagging
for this case (it wouldn't have the possible performance issue because we
are going to write all the inode anyway).
I can write the patch but frankly there are so many patches floating
around that I'm not sure what I should base it on...

Honza

--
Jan Kara <jack@suse.cz>
SUSE Labs, CR