VisionFive2 Linux kernel

StarFive Tech Linux Kernel for VisionFive (JH7110) boards (mirror)

More than 9999 Commits   32 Branches   54 Tags
author: Ming Lei <ming.lei@redhat.com> 2021-01-11 11:05:54 +0800 committer: Jens Axboe <axboe@kernel.dk> 2021-01-24 21:22:45 -0700 commit: 9f180e315a93cde559ac1c9c4c5ce980aa681c1c parent: c495a17679523c95f77f13697a71921dd5c224cd
Commit Summary:
block: don't allocate inline bvecs if this bioset needn't bvecs
Diffstat:
1 file changed, 5 insertions, 2 deletions
diff --git a/block/bio.c b/block/bio.c
index 87bf16460e0e..8ccda51dd831 100644
--- a/block/bio.c
+++ b/block/bio.c
@@ -89,8 +89,7 @@ fail_alloc_slab:
 
 static inline unsigned int bs_bio_slab_size(struct bio_set *bs)
 {
-	return bs->front_pad + sizeof(struct bio) +
-		BIO_INLINE_VECS * sizeof(struct bio_vec);
+	return bs->front_pad + sizeof(struct bio) + bs->back_pad;
 }
 
 static struct kmem_cache *bio_find_or_create_slab(struct bio_set *bs)
@@ -1563,6 +1562,10 @@ int bioset_init(struct bio_set *bs,
 		int flags)
 {
 	bs->front_pad = front_pad;
+	if (flags & BIOSET_NEED_BVECS)
+		bs->back_pad = BIO_INLINE_VECS * sizeof(struct bio_vec);
+	else
+		bs->back_pad = 0;
 
 	spin_lock_init(&bs->rescue_lock);
 	bio_list_init(&bs->rescue_list);