Lines Matching refs:osd_data
88 static void ceph_osd_data_init(struct ceph_osd_data *osd_data) in ceph_osd_data_init() argument
90 memset(osd_data, 0, sizeof (*osd_data)); in ceph_osd_data_init()
91 osd_data->type = CEPH_OSD_DATA_TYPE_NONE; in ceph_osd_data_init()
94 static void ceph_osd_data_pages_init(struct ceph_osd_data *osd_data, in ceph_osd_data_pages_init() argument
98 osd_data->type = CEPH_OSD_DATA_TYPE_PAGES; in ceph_osd_data_pages_init()
99 osd_data->pages = pages; in ceph_osd_data_pages_init()
100 osd_data->length = length; in ceph_osd_data_pages_init()
101 osd_data->alignment = alignment; in ceph_osd_data_pages_init()
102 osd_data->pages_from_pool = pages_from_pool; in ceph_osd_data_pages_init()
103 osd_data->own_pages = own_pages; in ceph_osd_data_pages_init()
106 static void ceph_osd_data_pagelist_init(struct ceph_osd_data *osd_data, in ceph_osd_data_pagelist_init() argument
109 osd_data->type = CEPH_OSD_DATA_TYPE_PAGELIST; in ceph_osd_data_pagelist_init()
110 osd_data->pagelist = pagelist; in ceph_osd_data_pagelist_init()
114 static void ceph_osd_data_bio_init(struct ceph_osd_data *osd_data, in ceph_osd_data_bio_init() argument
117 osd_data->type = CEPH_OSD_DATA_TYPE_BIO; in ceph_osd_data_bio_init()
118 osd_data->bio = bio; in ceph_osd_data_bio_init()
119 osd_data->bio_length = bio_length; in ceph_osd_data_bio_init()
141 return osd_req_op_data(osd_req, which, extent, osd_data); in osd_req_op_extent_osd_data()
158 struct ceph_osd_data *osd_data; in osd_req_op_raw_data_in_pages() local
160 osd_data = osd_req_op_raw_data_in(osd_req, which); in osd_req_op_raw_data_in_pages()
161 ceph_osd_data_pages_init(osd_data, pages, length, alignment, in osd_req_op_raw_data_in_pages()
171 struct ceph_osd_data *osd_data; in osd_req_op_extent_osd_data_pages() local
173 osd_data = osd_req_op_data(osd_req, which, extent, osd_data); in osd_req_op_extent_osd_data_pages()
174 ceph_osd_data_pages_init(osd_data, pages, length, alignment, in osd_req_op_extent_osd_data_pages()
182 struct ceph_osd_data *osd_data; in osd_req_op_extent_osd_data_pagelist() local
184 osd_data = osd_req_op_data(osd_req, which, extent, osd_data); in osd_req_op_extent_osd_data_pagelist()
185 ceph_osd_data_pagelist_init(osd_data, pagelist); in osd_req_op_extent_osd_data_pagelist()
193 struct ceph_osd_data *osd_data; in osd_req_op_extent_osd_data_bio() local
195 osd_data = osd_req_op_data(osd_req, which, extent, osd_data); in osd_req_op_extent_osd_data_bio()
196 ceph_osd_data_bio_init(osd_data, bio, bio_length); in osd_req_op_extent_osd_data_bio()
205 struct ceph_osd_data *osd_data; in osd_req_op_cls_request_info_pagelist() local
207 osd_data = osd_req_op_data(osd_req, which, cls, request_info); in osd_req_op_cls_request_info_pagelist()
208 ceph_osd_data_pagelist_init(osd_data, pagelist); in osd_req_op_cls_request_info_pagelist()
215 struct ceph_osd_data *osd_data; in osd_req_op_cls_request_data_pagelist() local
217 osd_data = osd_req_op_data(osd_req, which, cls, request_data); in osd_req_op_cls_request_data_pagelist()
218 ceph_osd_data_pagelist_init(osd_data, pagelist); in osd_req_op_cls_request_data_pagelist()
226 struct ceph_osd_data *osd_data; in osd_req_op_cls_request_data_pages() local
228 osd_data = osd_req_op_data(osd_req, which, cls, request_data); in osd_req_op_cls_request_data_pages()
229 ceph_osd_data_pages_init(osd_data, pages, length, alignment, in osd_req_op_cls_request_data_pages()
238 struct ceph_osd_data *osd_data; in osd_req_op_cls_response_data_pages() local
240 osd_data = osd_req_op_data(osd_req, which, cls, response_data); in osd_req_op_cls_response_data_pages()
241 ceph_osd_data_pages_init(osd_data, pages, length, alignment, in osd_req_op_cls_response_data_pages()
246 static u64 ceph_osd_data_length(struct ceph_osd_data *osd_data) in ceph_osd_data_length() argument
248 switch (osd_data->type) { in ceph_osd_data_length()
252 return osd_data->length; in ceph_osd_data_length()
254 return (u64)osd_data->pagelist->length; in ceph_osd_data_length()
257 return (u64)osd_data->bio_length; in ceph_osd_data_length()
260 WARN(true, "unrecognized data type %d\n", (int)osd_data->type); in ceph_osd_data_length()
265 static void ceph_osd_data_release(struct ceph_osd_data *osd_data) in ceph_osd_data_release() argument
267 if (osd_data->type == CEPH_OSD_DATA_TYPE_PAGES && osd_data->own_pages) { in ceph_osd_data_release()
270 num_pages = calc_pages_for((u64)osd_data->alignment, in ceph_osd_data_release()
271 (u64)osd_data->length); in ceph_osd_data_release()
272 ceph_release_page_vector(osd_data->pages, num_pages); in ceph_osd_data_release()
274 ceph_osd_data_init(osd_data); in ceph_osd_data_release()
288 ceph_osd_data_release(&op->extent.osd_data); in osd_req_op_data_release()
297 ceph_osd_data_release(&op->xattr.osd_data); in osd_req_op_data_release()
578 ceph_osd_data_pagelist_init(&op->xattr.osd_data, pagelist); in osd_req_op_xattr_init()
620 struct ceph_osd_data *osd_data) in ceph_osdc_msg_data_add() argument
622 u64 length = ceph_osd_data_length(osd_data); in ceph_osdc_msg_data_add()
624 if (osd_data->type == CEPH_OSD_DATA_TYPE_PAGES) { in ceph_osdc_msg_data_add()
627 ceph_msg_data_add_pages(msg, osd_data->pages, in ceph_osdc_msg_data_add()
628 length, osd_data->alignment); in ceph_osdc_msg_data_add()
629 } else if (osd_data->type == CEPH_OSD_DATA_TYPE_PAGELIST) { in ceph_osdc_msg_data_add()
631 ceph_msg_data_add_pagelist(msg, osd_data->pagelist); in ceph_osdc_msg_data_add()
633 } else if (osd_data->type == CEPH_OSD_DATA_TYPE_BIO) { in ceph_osdc_msg_data_add()
634 ceph_msg_data_add_bio(msg, osd_data->bio, length); in ceph_osdc_msg_data_add()
637 BUG_ON(osd_data->type != CEPH_OSD_DATA_TYPE_NONE); in ceph_osdc_msg_data_add()
645 struct ceph_osd_data *osd_data; in osd_req_encode_op() local
659 osd_data = &src->raw_data_in; in osd_req_encode_op()
660 ceph_osdc_msg_data_add(req->r_reply, osd_data); in osd_req_encode_op()
674 osd_data = &src->extent.osd_data; in osd_req_encode_op()
676 ceph_osdc_msg_data_add(req->r_request, osd_data); in osd_req_encode_op()
678 ceph_osdc_msg_data_add(req->r_reply, osd_data); in osd_req_encode_op()
683 osd_data = &src->cls.request_info; in osd_req_encode_op()
684 ceph_osdc_msg_data_add(req->r_request, osd_data); in osd_req_encode_op()
685 BUG_ON(osd_data->type != CEPH_OSD_DATA_TYPE_PAGELIST); in osd_req_encode_op()
686 request_data_len = osd_data->pagelist->length; in osd_req_encode_op()
688 osd_data = &src->cls.request_data; in osd_req_encode_op()
689 data_length = ceph_osd_data_length(osd_data); in osd_req_encode_op()
691 BUG_ON(osd_data->type == CEPH_OSD_DATA_TYPE_NONE); in osd_req_encode_op()
693 ceph_osdc_msg_data_add(req->r_request, osd_data); in osd_req_encode_op()
697 osd_data = &src->cls.response_data; in osd_req_encode_op()
698 ceph_osdc_msg_data_add(req->r_reply, osd_data); in osd_req_encode_op()
720 osd_data = &src->xattr.osd_data; in osd_req_encode_op()
721 ceph_osdc_msg_data_add(req->r_request, osd_data); in osd_req_encode_op()
722 request_data_len = osd_data->pagelist->length; in osd_req_encode_op()
2858 struct ceph_osd_data *osd_data; in get_reply() local
2865 osd_data = osd_req_op_extent_osd_data(req, 0); in get_reply()
2866 if (osd_data->type == CEPH_OSD_DATA_TYPE_PAGES) { in get_reply()
2867 if (osd_data->pages && in get_reply()
2868 unlikely(osd_data->length < data_len)) { in get_reply()
2871 tid, data_len, osd_data->length); in get_reply()