Lines Matching defs:osd_data

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