block: set BIO_NO_PAGE_REF in bio_iov_bvec_set

bio_iov_bvec_set assigns the foreign bvec, so setting the NO_PAGE_REF
directly there seems like the best fit.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
Christoph Hellwig 2021-02-02 18:19:26 +01:00 committed by Jens Axboe
parent 86004515ed
commit ed97ce5e1d
1 changed files with 2 additions and 3 deletions

View File

@ -941,6 +941,7 @@ static int bio_iov_bvec_set(struct bio *bio, struct iov_iter *iter)
bio->bi_io_vec = (struct bio_vec *)iter->bvec; bio->bi_io_vec = (struct bio_vec *)iter->bvec;
bio->bi_iter.bi_bvec_done = iter->iov_offset; bio->bi_iter.bi_bvec_done = iter->iov_offset;
bio->bi_iter.bi_size = iter->count; bio->bi_iter.bi_size = iter->count;
bio_set_flag(bio, BIO_NO_PAGE_REF);
iov_iter_advance(iter, iter->count); iov_iter_advance(iter, iter->count);
return 0; return 0;
@ -1078,9 +1079,7 @@ int bio_iov_iter_get_pages(struct bio *bio, struct iov_iter *iter)
if (iov_iter_is_bvec(iter)) { if (iov_iter_is_bvec(iter)) {
if (WARN_ON_ONCE(bio_op(bio) == REQ_OP_ZONE_APPEND)) if (WARN_ON_ONCE(bio_op(bio) == REQ_OP_ZONE_APPEND))
return -EINVAL; return -EINVAL;
bio_iov_bvec_set(bio, iter); return bio_iov_bvec_set(bio, iter);
bio_set_flag(bio, BIO_NO_PAGE_REF);
return 0;
} }
do { do {