aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Elder <elder@inktank.com>2013-04-05 15:46:01 -0400
committerSage Weil <sage@inktank.com>2013-05-02 00:18:28 -0400
commitc851c49591ebf000c610711e39eea7da5ff05b21 (patch)
tree917451c570fae240e1902085a75d7ff970deb981
parentf759ebb968dbf185fc079dd2e824b1aa3a3d71aa (diff)
libceph: record bio length
The bio is the only data item type that doesn't record its full length. Fix that. Signed-off-by: Alex Elder <elder@inktank.com> Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
-rw-r--r--include/linux/ceph/messenger.h5
-rw-r--r--net/ceph/messenger.c1
2 files changed, 5 insertions, 1 deletions
diff --git a/include/linux/ceph/messenger.h b/include/linux/ceph/messenger.h
index cdeebae03e0d..4fb870a5b5fc 100644
--- a/include/linux/ceph/messenger.h
+++ b/include/linux/ceph/messenger.h
@@ -116,7 +116,10 @@ struct ceph_msg_data {
116 enum ceph_msg_data_type type; 116 enum ceph_msg_data_type type;
117 union { 117 union {
118#ifdef CONFIG_BLOCK 118#ifdef CONFIG_BLOCK
119 struct bio *bio; 119 struct {
120 struct bio *bio;
121 size_t bio_length;
122 };
120#endif /* CONFIG_BLOCK */ 123#endif /* CONFIG_BLOCK */
121 struct { 124 struct {
122 struct page **pages; /* NOT OWNER. */ 125 struct page **pages; /* NOT OWNER. */
diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c
index cb5b4e6733f0..731bb9efa2c6 100644
--- a/net/ceph/messenger.c
+++ b/net/ceph/messenger.c
@@ -3032,6 +3032,7 @@ void ceph_msg_data_set_bio(struct ceph_msg *msg, struct bio *bio,
3032 data = ceph_msg_data_create(CEPH_MSG_DATA_BIO); 3032 data = ceph_msg_data_create(CEPH_MSG_DATA_BIO);
3033 BUG_ON(!data); 3033 BUG_ON(!data);
3034 data->bio = bio; 3034 data->bio = bio;
3035 data->bio_length = length;
3035 3036
3036 msg->data = data; 3037 msg->data = data;
3037 msg->data_length = length; 3038 msg->data_length = length;