Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 491221f8 authored by Guoqing Jiang's avatar Guoqing Jiang Committed by Jens Axboe
Browse files

block: export bio_free_pages to other modules



bio_free_pages is introduced in commit 1dfa0f68
("block: add a helper to free bio bounce buffer pages"),
we can reuse the func in other modules after it was
imported.

Cc: Christoph Hellwig <hch@infradead.org>
Cc: Jens Axboe <axboe@fb.com>
Cc: Mike Snitzer <snitzer@redhat.com>
Cc: Shaohua Li <shli@fb.com>
Signed-off-by: default avatarGuoqing Jiang <gqjiang@suse.com>
Acked-by: default avatarKent Overstreet <kent.overstreet@gmail.com>
Signed-off-by: default avatarJens Axboe <axboe@fb.com>
parent 1e3aeae4
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1068,7 +1068,7 @@ static int bio_copy_to_iter(struct bio *bio, struct iov_iter iter)
	return 0;
}

static void bio_free_pages(struct bio *bio)
void bio_free_pages(struct bio *bio)
{
	struct bio_vec *bvec;
	int i;
@@ -1076,6 +1076,7 @@ static void bio_free_pages(struct bio *bio)
	bio_for_each_segment_all(bvec, bio, i)
		__free_page(bvec->bv_page);
}
EXPORT_SYMBOL(bio_free_pages);

/**
 *	bio_uncopy_user	-	finish previously mapped bio
+1 −5
Original line number Diff line number Diff line
@@ -361,12 +361,8 @@ static void __btree_node_write_done(struct closure *cl)
static void btree_node_write_done(struct closure *cl)
{
	struct btree *b = container_of(cl, struct btree, io);
	struct bio_vec *bv;
	int n;

	bio_for_each_segment_all(bv, b->bio, n)
		__free_page(bv->bv_page);

	bio_free_pages(b->bio);
	__btree_node_write_done(cl);
}

+2 −4
Original line number Diff line number Diff line
@@ -107,9 +107,8 @@ void bch_data_verify(struct cached_dev *dc, struct bio *bio)
{
	char name[BDEVNAME_SIZE];
	struct bio *check;
	struct bio_vec bv, *bv2;
	struct bio_vec bv;
	struct bvec_iter iter;
	int i;

	check = bio_clone(bio, GFP_NOIO);
	if (!check)
@@ -136,8 +135,7 @@ void bch_data_verify(struct cached_dev *dc, struct bio *bio)
		kunmap_atomic(p1);
	}

	bio_for_each_segment_all(bv2, check, i)
		__free_page(bv2->bv_page);
	bio_free_pages(check);
out_put:
	bio_put(check);
}
+1 −4
Original line number Diff line number Diff line
@@ -44,11 +44,8 @@ static void write_moving_finish(struct closure *cl)
{
	struct moving_io *io = container_of(cl, struct moving_io, cl);
	struct bio *bio = &io->bio.bio;
	struct bio_vec *bv;
	int i;

	bio_for_each_segment_all(bv, bio, i)
		__free_page(bv->bv_page);
	bio_free_pages(bio);

	if (io->op.replace_collision)
		trace_bcache_gc_copy_collision(&io->w->key);
+2 −7
Original line number Diff line number Diff line
@@ -694,13 +694,8 @@ static void cached_dev_cache_miss_done(struct closure *cl)
	if (s->iop.replace_collision)
		bch_mark_cache_miss_collision(s->iop.c, s->d);

	if (s->iop.bio) {
		int i;
		struct bio_vec *bv;

		bio_for_each_segment_all(bv, s->iop.bio, i)
			__free_page(bv->bv_page);
	}
	if (s->iop.bio)
		bio_free_pages(s->iop.bio);

	cached_dev_bio_complete(cl);
}
Loading