Re: [PATCH 46/60] block: deal with dirtying pages for multipage bvec
From: Ming Lei
Date: Mon Oct 31 2016 - 20:19:13 EST
On Mon, Oct 31, 2016 at 11:40 PM, Christoph Hellwig <hch@xxxxxxxxxxxxx> wrote:
> On Sat, Oct 29, 2016 at 04:08:45PM +0800, Ming Lei wrote:
>> In bio_check_pages_dirty(), bvec->bv_page is used as flag
>> for marking if the page has been dirtied & released, and if
>> no, it will be dirtied in deferred workqueue.
>>
>> With multipage bvec, we can't do that any more, so change
>> the logic into checking all pages in one mp bvec, and only
>> release all these pages if all are dirtied, otherwise dirty
>> them all in deferred wrokqueue.
>
> Just defer the whole bio to the workqueue if we need to redirty any,
> that avoids having all these complex iteratations.
For dio READ, it is always dirtied before submitting, so there should be
little possibity that pages in the bio becomes non-dirty after completion,
it should hurt performance if each direct-read bio is deferred to the block
wq.
thanks,
Ming Lei