> @@ -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.