Re: [PATCH 1/4] block: bio: introduce helpers to get the 1st and last bvec

From: Sagi Grimberg
Date: Mon Feb 15 2016 - 03:19:58 EST



+/*
+ * bio_get_last_bvec() is introduced to get the last bvec of one
+ * bio for bio_will_gap().
+ *
+ * TODO: make it more efficient.
+ */
+static inline void bio_get_last_bvec(struct bio *bio, struct bio_vec *bv)
+{
+ struct bvec_iter iter;
+
+ bio_for_each_segment(*bv, bio, iter)
+ if (bv->bv_len == iter.bi_size)
+ break;
+}

This helper is used for each req/bio once or more. I'd say
it's critical to make it efficient and not settle for
a quick bail for drivers that don't have a virt_boundary
like you did in patch #2.

However, given that it's a regression bug fix I'm not sure it's the best
idea to add logic here.