Lines Matching refs:osd_req
1359 static void rbd_osd_submit(struct ceph_osd_request *osd_req)
1361 struct rbd_obj_request *obj_req = osd_req->r_priv;
1363 dout("%s osd_req %p for obj_req %p objno %llu %llu~%llu\n",
1364 __func__, osd_req, obj_req, obj_req->ex.oe_objno,
1366 ceph_osdc_start_request(osd_req->r_osdc, osd_req, false);
1449 static void rbd_osd_req_callback(struct ceph_osd_request *osd_req)
1451 struct rbd_obj_request *obj_req = osd_req->r_priv;
1454 dout("%s osd_req %p result %d for obj_req %p\n", __func__, osd_req,
1455 osd_req->r_result, obj_req);
1462 if (osd_req->r_result > 0 && rbd_img_is_write(obj_req->img_request))
1465 result = osd_req->r_result;
1470 static void rbd_osd_format_read(struct ceph_osd_request *osd_req)
1472 struct rbd_obj_request *obj_request = osd_req->r_priv;
1476 osd_req->r_flags = CEPH_OSD_FLAG_READ | opt->read_from_replica;
1477 osd_req->r_snapid = obj_request->img_request->snap_id;
1480 static void rbd_osd_format_write(struct ceph_osd_request *osd_req)
1482 struct rbd_obj_request *obj_request = osd_req->r_priv;
1484 osd_req->r_flags = CEPH_OSD_FLAG_WRITE;
1485 ktime_get_real_ts64(&osd_req->r_mtime);
1486 osd_req->r_data_offset = obj_request->ex.oe_off;
1552 struct ceph_osd_request *osd_req;
1560 osd_req = list_first_entry(&obj_request->osd_reqs,
1562 list_del_init(&osd_req->r_private_item);
1563 ceph_osdc_put_request(osd_req);
2014 struct ceph_osd_request *osd_req)
2023 if (osd_req->r_result)
2024 return osd_req->r_result;
2029 if (osd_req->r_num_ops == 1)
2035 rbd_assert(osd_req->r_num_ops == 2);
2036 osd_data = osd_req_op_data(osd_req, 1, cls, request_data);
2058 static void rbd_object_map_callback(struct ceph_osd_request *osd_req)
2060 struct rbd_obj_request *obj_req = osd_req->r_priv;
2063 dout("%s osd_req %p result %d for obj_req %p\n", __func__, osd_req,
2064 osd_req->r_result, obj_req);
2066 result = rbd_object_map_update_finish(obj_req, osd_req);
2221 static void rbd_osd_setup_data(struct ceph_osd_request *osd_req, int which)
2223 struct rbd_obj_request *obj_req = osd_req->r_priv;
2227 osd_req_op_extent_osd_data_bio(osd_req, which,
2236 osd_req_op_extent_osd_data_bvec_pos(osd_req, which,
2244 static int rbd_osd_setup_stat(struct ceph_osd_request *osd_req, int which)
2260 osd_req_op_init(osd_req, which, CEPH_OSD_OP_STAT, 0);
2261 osd_req_op_raw_data_in_pages(osd_req, which, pages,
2267 static int rbd_osd_setup_copyup(struct ceph_osd_request *osd_req, int which,
2270 struct rbd_obj_request *obj_req = osd_req->r_priv;
2273 ret = osd_req_op_cls_init(osd_req, which, "rbd", "copyup");
2277 osd_req_op_cls_request_data_bvecs(osd_req, which, obj_req->copyup_bvecs,
2288 static void __rbd_osd_setup_write_ops(struct ceph_osd_request *osd_req,
2291 struct rbd_obj_request *obj_req = osd_req->r_priv;
2297 osd_req_op_alloc_hint_init(osd_req, which++,
2308 osd_req_op_extent_init(osd_req, which, opcode,
2310 rbd_osd_setup_data(osd_req, which);
2332 static void __rbd_osd_setup_discard_ops(struct ceph_osd_request *osd_req,
2335 struct rbd_obj_request *obj_req = osd_req->r_priv;
2339 osd_req_op_init(osd_req, which, CEPH_OSD_OP_DELETE, 0);
2341 osd_req_op_extent_init(osd_req, which,
2390 static void __rbd_osd_setup_zeroout_ops(struct ceph_osd_request *osd_req,
2393 struct rbd_obj_request *obj_req = osd_req->r_priv;
2399 osd_req_op_init(osd_req, which++,
2404 osd_req_op_init(osd_req, which++,
2413 osd_req_op_extent_init(osd_req, which, opcode,
2461 static void rbd_osd_setup_write_ops(struct ceph_osd_request *osd_req,
2464 struct rbd_obj_request *obj_req = osd_req->r_priv;
2468 __rbd_osd_setup_write_ops(osd_req, which);
2471 __rbd_osd_setup_discard_ops(osd_req, which);
2474 __rbd_osd_setup_zeroout_ops(osd_req, which);
2836 struct ceph_osd_request *osd_req;
2839 osd_req = __rbd_obj_add_osd_request(obj_req, NULL, 1);
2840 if (IS_ERR(osd_req))
2841 return PTR_ERR(osd_req);
2843 osd_req_op_extent_init(osd_req, 0, CEPH_OSD_OP_READ,
2845 rbd_osd_setup_data(osd_req, 0);
2846 rbd_osd_format_read(osd_req);
2848 ret = ceph_osdc_alloc_messages(osd_req, GFP_NOIO);
2852 rbd_osd_submit(osd_req);
3029 struct ceph_osd_request *osd_req;
3037 osd_req = rbd_obj_add_osd_request(obj_req, num_ops);
3038 if (IS_ERR(osd_req))
3039 return PTR_ERR(osd_req);
3042 ret = rbd_osd_setup_stat(osd_req, which++);
3047 rbd_osd_setup_write_ops(osd_req, which);
3048 rbd_osd_format_write(osd_req);
3050 ret = ceph_osdc_alloc_messages(osd_req, GFP_NOIO);
3054 rbd_osd_submit(osd_req);
3081 struct ceph_osd_request *osd_req;
3087 osd_req = __rbd_obj_add_osd_request(obj_req, &rbd_empty_snapc, 1);
3088 if (IS_ERR(osd_req))
3089 return PTR_ERR(osd_req);
3091 ret = rbd_osd_setup_copyup(osd_req, 0, bytes);
3095 rbd_osd_format_write(osd_req);
3097 ret = ceph_osdc_alloc_messages(osd_req, GFP_NOIO);
3101 rbd_osd_submit(osd_req);
3108 struct ceph_osd_request *osd_req;
3118 osd_req = rbd_obj_add_osd_request(obj_req, num_ops);
3119 if (IS_ERR(osd_req))
3120 return PTR_ERR(osd_req);
3123 ret = rbd_osd_setup_copyup(osd_req, which++, bytes);
3128 rbd_osd_setup_write_ops(osd_req, which);
3129 rbd_osd_format_write(osd_req);
3131 ret = ceph_osdc_alloc_messages(osd_req, GFP_NOIO);
3135 rbd_osd_submit(osd_req);