Lines Matching refs:osd_data
123 static void ceph_osd_data_init(struct ceph_osd_data *osd_data) in ceph_osd_data_init() argument
125 memset(osd_data, 0, sizeof (*osd_data)); in ceph_osd_data_init()
126 osd_data->type = CEPH_OSD_DATA_TYPE_NONE; in ceph_osd_data_init()
132 static void ceph_osd_data_pages_init(struct ceph_osd_data *osd_data, in ceph_osd_data_pages_init() argument
136 osd_data->type = CEPH_OSD_DATA_TYPE_PAGES; in ceph_osd_data_pages_init()
137 osd_data->pages = pages; in ceph_osd_data_pages_init()
138 osd_data->length = length; in ceph_osd_data_pages_init()
139 osd_data->alignment = alignment; in ceph_osd_data_pages_init()
140 osd_data->pages_from_pool = pages_from_pool; in ceph_osd_data_pages_init()
141 osd_data->own_pages = own_pages; in ceph_osd_data_pages_init()
147 static void ceph_osd_data_pagelist_init(struct ceph_osd_data *osd_data, in ceph_osd_data_pagelist_init() argument
150 osd_data->type = CEPH_OSD_DATA_TYPE_PAGELIST; in ceph_osd_data_pagelist_init()
151 osd_data->pagelist = pagelist; in ceph_osd_data_pagelist_init()
155 static void ceph_osd_data_bio_init(struct ceph_osd_data *osd_data, in ceph_osd_data_bio_init() argument
159 osd_data->type = CEPH_OSD_DATA_TYPE_BIO; in ceph_osd_data_bio_init()
160 osd_data->bio_pos = *bio_pos; in ceph_osd_data_bio_init()
161 osd_data->bio_length = bio_length; in ceph_osd_data_bio_init()
165 static void ceph_osd_data_bvecs_init(struct ceph_osd_data *osd_data, in ceph_osd_data_bvecs_init() argument
169 osd_data->type = CEPH_OSD_DATA_TYPE_BVECS; in ceph_osd_data_bvecs_init()
170 osd_data->bvec_pos = *bvec_pos; in ceph_osd_data_bvecs_init()
171 osd_data->num_bvecs = num_bvecs; in ceph_osd_data_bvecs_init()
174 static void ceph_osd_iter_init(struct ceph_osd_data *osd_data, in ceph_osd_iter_init() argument
177 osd_data->type = CEPH_OSD_DATA_TYPE_ITER; in ceph_osd_iter_init()
178 osd_data->iter = *iter; in ceph_osd_iter_init()
193 return osd_req_op_data(osd_req, which, extent, osd_data); in osd_req_op_extent_osd_data()
202 struct ceph_osd_data *osd_data; in osd_req_op_raw_data_in_pages() local
204 osd_data = osd_req_op_raw_data_in(osd_req, which); in osd_req_op_raw_data_in_pages()
205 ceph_osd_data_pages_init(osd_data, pages, length, alignment, in osd_req_op_raw_data_in_pages()
215 struct ceph_osd_data *osd_data; in osd_req_op_extent_osd_data_pages() local
217 osd_data = osd_req_op_data(osd_req, which, extent, osd_data); in osd_req_op_extent_osd_data_pages()
218 ceph_osd_data_pages_init(osd_data, pages, length, alignment, in osd_req_op_extent_osd_data_pages()
226 struct ceph_osd_data *osd_data; in osd_req_op_extent_osd_data_pagelist() local
228 osd_data = osd_req_op_data(osd_req, which, extent, osd_data); in osd_req_op_extent_osd_data_pagelist()
229 ceph_osd_data_pagelist_init(osd_data, pagelist); in osd_req_op_extent_osd_data_pagelist()
239 struct ceph_osd_data *osd_data; in osd_req_op_extent_osd_data_bio() local
241 osd_data = osd_req_op_data(osd_req, which, extent, osd_data); in osd_req_op_extent_osd_data_bio()
242 ceph_osd_data_bio_init(osd_data, bio_pos, bio_length); in osd_req_op_extent_osd_data_bio()
252 struct ceph_osd_data *osd_data; in osd_req_op_extent_osd_data_bvecs() local
258 osd_data = osd_req_op_data(osd_req, which, extent, osd_data); in osd_req_op_extent_osd_data_bvecs()
259 ceph_osd_data_bvecs_init(osd_data, &it, num_bvecs); in osd_req_op_extent_osd_data_bvecs()
267 struct ceph_osd_data *osd_data; in osd_req_op_extent_osd_data_bvec_pos() local
269 osd_data = osd_req_op_data(osd_req, which, extent, osd_data); in osd_req_op_extent_osd_data_bvec_pos()
270 ceph_osd_data_bvecs_init(osd_data, bvec_pos, 0); in osd_req_op_extent_osd_data_bvec_pos()
283 struct ceph_osd_data *osd_data; in osd_req_op_extent_osd_iter() local
285 osd_data = osd_req_op_data(osd_req, which, extent, osd_data); in osd_req_op_extent_osd_iter()
286 ceph_osd_iter_init(osd_data, iter); in osd_req_op_extent_osd_iter()
294 struct ceph_osd_data *osd_data; in osd_req_op_cls_request_info_pagelist() local
296 osd_data = osd_req_op_data(osd_req, which, cls, request_info); in osd_req_op_cls_request_info_pagelist()
297 ceph_osd_data_pagelist_init(osd_data, pagelist); in osd_req_op_cls_request_info_pagelist()
304 struct ceph_osd_data *osd_data; in osd_req_op_cls_request_data_pagelist() local
306 osd_data = osd_req_op_data(osd_req, which, cls, request_data); in osd_req_op_cls_request_data_pagelist()
307 ceph_osd_data_pagelist_init(osd_data, pagelist); in osd_req_op_cls_request_data_pagelist()
317 struct ceph_osd_data *osd_data; in osd_req_op_cls_request_data_pages() local
319 osd_data = osd_req_op_data(osd_req, which, cls, request_data); in osd_req_op_cls_request_data_pages()
320 ceph_osd_data_pages_init(osd_data, pages, length, alignment, in osd_req_op_cls_request_data_pages()
332 struct ceph_osd_data *osd_data; in osd_req_op_cls_request_data_bvecs() local
338 osd_data = osd_req_op_data(osd_req, which, cls, request_data); in osd_req_op_cls_request_data_bvecs()
339 ceph_osd_data_bvecs_init(osd_data, &it, num_bvecs); in osd_req_op_cls_request_data_bvecs()
349 struct ceph_osd_data *osd_data; in osd_req_op_cls_response_data_pages() local
351 osd_data = osd_req_op_data(osd_req, which, cls, response_data); in osd_req_op_cls_response_data_pages()
352 ceph_osd_data_pages_init(osd_data, pages, length, alignment, in osd_req_op_cls_response_data_pages()
357 static u64 ceph_osd_data_length(struct ceph_osd_data *osd_data) in ceph_osd_data_length() argument
359 switch (osd_data->type) { in ceph_osd_data_length()
363 return osd_data->length; in ceph_osd_data_length()
365 return (u64)osd_data->pagelist->length; in ceph_osd_data_length()
368 return (u64)osd_data->bio_length; in ceph_osd_data_length()
371 return osd_data->bvec_pos.iter.bi_size; in ceph_osd_data_length()
373 return iov_iter_count(&osd_data->iter); in ceph_osd_data_length()
375 WARN(true, "unrecognized data type %d\n", (int)osd_data->type); in ceph_osd_data_length()
380 static void ceph_osd_data_release(struct ceph_osd_data *osd_data) in ceph_osd_data_release() argument
382 if (osd_data->type == CEPH_OSD_DATA_TYPE_PAGES && osd_data->own_pages) { in ceph_osd_data_release()
385 num_pages = calc_pages_for((u64)osd_data->alignment, in ceph_osd_data_release()
386 (u64)osd_data->length); in ceph_osd_data_release()
387 ceph_release_page_vector(osd_data->pages, num_pages); in ceph_osd_data_release()
388 } else if (osd_data->type == CEPH_OSD_DATA_TYPE_PAGELIST) { in ceph_osd_data_release()
389 ceph_pagelist_release(osd_data->pagelist); in ceph_osd_data_release()
391 ceph_osd_data_init(osd_data); in ceph_osd_data_release()
408 ceph_osd_data_release(&op->extent.osd_data); in osd_req_op_data_release()
417 ceph_osd_data_release(&op->xattr.osd_data); in osd_req_op_data_release()
433 ceph_osd_data_release(&op->copy_from.osd_data); in osd_req_op_data_release()
898 ceph_osd_data_pagelist_init(&op->xattr.osd_data, pagelist); in osd_req_op_xattr_init()
964 struct ceph_osd_data *osd_data) in ceph_osdc_msg_data_add() argument
966 u64 length = ceph_osd_data_length(osd_data); in ceph_osdc_msg_data_add()
968 if (osd_data->type == CEPH_OSD_DATA_TYPE_PAGES) { in ceph_osdc_msg_data_add()
971 ceph_msg_data_add_pages(msg, osd_data->pages, in ceph_osdc_msg_data_add()
972 length, osd_data->alignment, false); in ceph_osdc_msg_data_add()
973 } else if (osd_data->type == CEPH_OSD_DATA_TYPE_PAGELIST) { in ceph_osdc_msg_data_add()
975 ceph_msg_data_add_pagelist(msg, osd_data->pagelist); in ceph_osdc_msg_data_add()
977 } else if (osd_data->type == CEPH_OSD_DATA_TYPE_BIO) { in ceph_osdc_msg_data_add()
978 ceph_msg_data_add_bio(msg, &osd_data->bio_pos, length); in ceph_osdc_msg_data_add()
980 } else if (osd_data->type == CEPH_OSD_DATA_TYPE_BVECS) { in ceph_osdc_msg_data_add()
981 ceph_msg_data_add_bvecs(msg, &osd_data->bvec_pos); in ceph_osdc_msg_data_add()
982 } else if (osd_data->type == CEPH_OSD_DATA_TYPE_ITER) { in ceph_osdc_msg_data_add()
983 ceph_msg_data_add_iter(msg, &osd_data->iter); in ceph_osdc_msg_data_add()
985 BUG_ON(osd_data->type != CEPH_OSD_DATA_TYPE_NONE); in ceph_osdc_msg_data_add()
2075 &op->extent.osd_data); in setup_request_data()
2082 &op->xattr.osd_data); in setup_request_data()
2090 &op->copy_from.osd_data); in setup_request_data()
2101 &op->extent.osd_data); in setup_request_data()
3083 struct ceph_osd_data *osd_data = in linger_commit_cb() local
3085 void *p = page_address(osd_data->pages[0]); in linger_commit_cb()
3088 osd_data->type != CEPH_OSD_DATA_TYPE_PAGES); in linger_commit_cb()
5379 ceph_osd_data_pages_init(&op->copy_from.osd_data, pages, in osd_req_op_copy_from_init()