On Thu, Apr 11, 2019 at 08:23:29AM +0200, Christoph Hellwig wrote: > No caller uses bio_iov_iter_get_pages multiple times on a given bio, > and that funtionality isn't all that useful. Removing it will make > some future changes a little easier and also simplifies the function > a bit. > > Signed-off-by: Christoph Hellwig <hch@xxxxxx> > Reviewed-by: Johannes Thumshirn <jthumshirn@xxxxxxx> > --- > block/bio.c | 15 ++++++--------- > 1 file changed, 6 insertions(+), 9 deletions(-) > > diff --git a/block/bio.c b/block/bio.c > index ad346082a971..c2a389b1509a 100644 > --- a/block/bio.c > +++ b/block/bio.c > @@ -958,7 +958,10 @@ static int __bio_iov_iter_get_pages(struct bio *bio, struct iov_iter *iter) > int bio_iov_iter_get_pages(struct bio *bio, struct iov_iter *iter) > { > const bool is_bvec = iov_iter_is_bvec(iter); > - unsigned short orig_vcnt = bio->bi_vcnt; > + int ret; > + > + if (WARN_ON_ONCE(bio->bi_vcnt)) > + return -EINVAL; > > /* > * If this is a BVEC iter, then the pages are kernel pages. Don't > @@ -968,19 +971,13 @@ int bio_iov_iter_get_pages(struct bio *bio, struct iov_iter *iter) > bio_set_flag(bio, BIO_NO_PAGE_REF); > > do { > - int ret; > - > if (is_bvec) > ret = __bio_iov_bvec_add_pages(bio, iter); > else > ret = __bio_iov_iter_get_pages(bio, iter); > + } while (!ret && iov_iter_count(iter) && !bio_full(bio)); > > - if (unlikely(ret)) > - return bio->bi_vcnt > orig_vcnt ? 0 : ret; > - > - } while (iov_iter_count(iter) && !bio_full(bio)); > - > - return 0; > + return bio->bi_vcnt ? 0 : ret; > } > > static void submit_bio_wait_endio(struct bio *bio) > -- > 2.20.1 > Reviewed-by: Ming Lei <ming.lei@xxxxxxxxxx> -- Ming