On Wed, Mar 16, 2022 at 01:48:05AM -0700, Christoph Hellwig wrote: > > @@ -1035,8 +1035,9 @@ void __bio_add_page(struct bio *bio, struct page *page, > > bio->bi_iter.bi_size += len; > > bio->bi_vcnt++; > > > > - if (!bio_flagged(bio, BIO_WORKINGSET) && unlikely(PageWorkingset(page))) > > - bio_set_flag(bio, BIO_WORKINGSET); > > + if (!bio_flagged(bio, BIO_WORKINGSET_FILE) && > > + unlikely(PageWorkingset(page)) && !PageSwapBacked(page)) > > + bio_set_flag(bio, BIO_WORKINGSET_FILE); > > This needs to go out of the block I/O fast path, not grow even more > checks. Thanks for your replying. First, Johannes Weiner had made his state, see: https://lore.kernel.org/all/Yio17pXawRuuVJFO@xxxxxxxxxxx/ Second, I understand your concern, but actually there seems no better way to do file pages workingset delay accounting, because this is no unique function to track file pages submitting, kernel do this in multiple sub-system. Thirdly, this patch doesn't make it worse, indeed it reduce unnecessary psi accounting in submit_bio.