[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <6601abe90908130909v582df37aq773e95f49f4a1248@mail.gmail.com>
Date: Thu, 13 Aug 2009 09:09:58 -0700
From: Curt Wohlgemuth <curtw@...gle.com>
To: ext4 development <linux-ext4@...r.kernel.org>
Subject: Questions on ext4 and writeback
I've got a question about how ext4 handles the writeback control fields in
ext4_da_writepages().
I understand how the big picture works: since we're doing delayed
allocation, when we're asked to write out a range of dirty pages, we need to
do allocation *now*, and we want to do allocation on the largest contiguous
range of pages possible.
So when __mpage_da_writepage() finds a page discontinuity, we submit the
page extent we have so far for I/O, and call redirty_page_for_writepage() on
the current page, skip the rest of the pages in the pagevec, and wait for a
new transaction.
On return from write_cache_pages(), ext4_da_writepages() will check the
return value from __mpage_da_writepage(), and if it's MPAGE_DA_EXTENT_TAIL,
will bump the number of pages written, and possibly cause another loop to
handle the rest of the pages (after the discontinuity).
What I don't understand is why wbc->pages_skipped is reset in this case.
I *think* that ext4_da_writepages() is trying to undo the effect of
redirty_page_for_writepage() to increment pages_skipped -- since we didn't
really skip this page, we only postponed its handling to the next pagevec.
But the actual submittal of I/O for the previous extent might cause
pages_skipped to be bumped, right? Removing these increments might cause
the accounting to be incorrect, it seems to me.
I think it would be safer to explicitly decrement wbc->pages_skipped after a
call to redirty_page_for_writepage(), rather than reset this value to what
it was when ext4_da_writepages() was called. Can somebody help me
understand where I might be mistaken?
Thanks,
Curt
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists