[dm-devel] [PATCH V3 06/13] block: add new field into 'struct bvec_iter'
Ming Lei
ming.lei at redhat.com
Wed Mar 24 12:19:20 UTC 2021
There is a hole at the end of 'struct bvec_iter', so put a new field
here and we can save cookie returned from submit_bio() here for
supporting bio based polling.
This way can avoid to extend bio unnecessarily.
Meantime add two helpers to get/set this field.
Signed-off-by: Ming Lei <ming.lei at redhat.com>
---
block/blk.h | 10 ++++++++++
include/linux/bvec.h | 8 ++++++++
2 files changed, 18 insertions(+)
diff --git a/block/blk.h b/block/blk.h
index 424949f2226d..7e16419904fa 100644
--- a/block/blk.h
+++ b/block/blk.h
@@ -402,4 +402,14 @@ static inline void blk_create_io_context(struct request_queue *q,
bio_poll_ctx_alloc(ioc);
}
+static inline unsigned int bio_get_private_data(struct bio *bio)
+{
+ return bio->bi_iter.bi_private_data;
+}
+
+static inline void bio_set_private_data(struct bio *bio, unsigned int data)
+{
+ bio->bi_iter.bi_private_data = data;
+}
+
#endif /* BLK_INTERNAL_H */
diff --git a/include/linux/bvec.h b/include/linux/bvec.h
index ff832e698efb..547ad7526960 100644
--- a/include/linux/bvec.h
+++ b/include/linux/bvec.h
@@ -43,6 +43,14 @@ struct bvec_iter {
unsigned int bi_bvec_done; /* number of bytes completed in
current bvec */
+
+ /*
+ * There is a hole at the end of bvec_iter, add one new field to hold
+ * something which isn't related with 'bvec_iter', so that we can
+ * avoid extending bio. So far this new field is used for bio based
+ * polling, we will store returning value of submit_bio() here.
+ */
+ unsigned int bi_private_data;
};
struct bvec_iter_all {
--
2.29.2
More information about the dm-devel
mailing list