Lines Matching refs:osd_req

1296 static void rbd_osd_submit(struct ceph_osd_request *osd_req)
1298 struct rbd_obj_request *obj_req = osd_req->r_priv;
1300 dout("%s osd_req %p for obj_req %p objno %llu %llu~%llu\n",
1301 __func__, osd_req, obj_req, obj_req->ex.oe_objno,
1303 ceph_osdc_start_request(osd_req->r_osdc, osd_req);
1386 static void rbd_osd_req_callback(struct ceph_osd_request *osd_req)
1388 struct rbd_obj_request *obj_req = osd_req->r_priv;
1391 dout("%s osd_req %p result %d for obj_req %p\n", __func__, osd_req,
1392 osd_req->r_result, obj_req);
1399 if (osd_req->r_result > 0 && rbd_img_is_write(obj_req->img_request))
1402 result = osd_req->r_result;
1407 static void rbd_osd_format_read(struct ceph_osd_request *osd_req)
1409 struct rbd_obj_request *obj_request = osd_req->r_priv;
1413 osd_req->r_flags = CEPH_OSD_FLAG_READ | opt->read_from_replica;
1414 osd_req->r_snapid = obj_request->img_request->snap_id;
1417 static void rbd_osd_format_write(struct ceph_osd_request *osd_req)
1419 struct rbd_obj_request *obj_request = osd_req->r_priv;
1421 osd_req->r_flags = CEPH_OSD_FLAG_WRITE;
1422 ktime_get_real_ts64(&osd_req->r_mtime);
1423 osd_req->r_data_offset = obj_request->ex.oe_off;
1489 struct ceph_osd_request *osd_req;
1497 osd_req = list_first_entry(&obj_request->osd_reqs,
1499 list_del_init(&osd_req->r_private_item);
1500 ceph_osdc_put_request(osd_req);
1951 struct ceph_osd_request *osd_req)
1960 if (osd_req->r_result)
1961 return osd_req->r_result;
1966 if (osd_req->r_num_ops == 1)
1972 rbd_assert(osd_req->r_num_ops == 2);
1973 osd_data = osd_req_op_data(osd_req, 1, cls, request_data);
1995 static void rbd_object_map_callback(struct ceph_osd_request *osd_req)
1997 struct rbd_obj_request *obj_req = osd_req->r_priv;
2000 dout("%s osd_req %p result %d for obj_req %p\n", __func__, osd_req,
2001 osd_req->r_result, obj_req);
2003 result = rbd_object_map_update_finish(obj_req, osd_req);
2158 static void rbd_osd_setup_data(struct ceph_osd_request *osd_req, int which)
2160 struct rbd_obj_request *obj_req = osd_req->r_priv;
2164 osd_req_op_extent_osd_data_bio(osd_req, which,
2173 osd_req_op_extent_osd_data_bvec_pos(osd_req, which,
2181 static int rbd_osd_setup_stat(struct ceph_osd_request *osd_req, int which)
2197 osd_req_op_init(osd_req, which, CEPH_OSD_OP_STAT, 0);
2198 osd_req_op_raw_data_in_pages(osd_req, which, pages,
2204 static int rbd_osd_setup_copyup(struct ceph_osd_request *osd_req, int which,
2207 struct rbd_obj_request *obj_req = osd_req->r_priv;
2210 ret = osd_req_op_cls_init(osd_req, which, "rbd", "copyup");
2214 osd_req_op_cls_request_data_bvecs(osd_req, which, obj_req->copyup_bvecs,
2225 static void __rbd_osd_setup_write_ops(struct ceph_osd_request *osd_req,
2228 struct rbd_obj_request *obj_req = osd_req->r_priv;
2234 osd_req_op_alloc_hint_init(osd_req, which++,
2245 osd_req_op_extent_init(osd_req, which, opcode,
2247 rbd_osd_setup_data(osd_req, which);
2269 static void __rbd_osd_setup_discard_ops(struct ceph_osd_request *osd_req,
2272 struct rbd_obj_request *obj_req = osd_req->r_priv;
2276 osd_req_op_init(osd_req, which, CEPH_OSD_OP_DELETE, 0);
2278 osd_req_op_extent_init(osd_req, which,
2327 static void __rbd_osd_setup_zeroout_ops(struct ceph_osd_request *osd_req,
2330 struct rbd_obj_request *obj_req = osd_req->r_priv;
2336 osd_req_op_init(osd_req, which++,
2341 osd_req_op_init(osd_req, which++,
2350 osd_req_op_extent_init(osd_req, which, opcode,
2398 static void rbd_osd_setup_write_ops(struct ceph_osd_request *osd_req,
2401 struct rbd_obj_request *obj_req = osd_req->r_priv;
2405 __rbd_osd_setup_write_ops(osd_req, which);
2408 __rbd_osd_setup_discard_ops(osd_req, which);
2411 __rbd_osd_setup_zeroout_ops(osd_req, which);
2773 struct ceph_osd_request *osd_req;
2776 osd_req = __rbd_obj_add_osd_request(obj_req, NULL, 1);
2777 if (IS_ERR(osd_req))
2778 return PTR_ERR(osd_req);
2780 osd_req_op_extent_init(osd_req, 0, CEPH_OSD_OP_READ,
2782 rbd_osd_setup_data(osd_req, 0);
2783 rbd_osd_format_read(osd_req);
2785 ret = ceph_osdc_alloc_messages(osd_req, GFP_NOIO);
2789 rbd_osd_submit(osd_req);
2966 struct ceph_osd_request *osd_req;
2974 osd_req = rbd_obj_add_osd_request(obj_req, num_ops);
2975 if (IS_ERR(osd_req))
2976 return PTR_ERR(osd_req);
2979 ret = rbd_osd_setup_stat(osd_req, which++);
2984 rbd_osd_setup_write_ops(osd_req, which);
2985 rbd_osd_format_write(osd_req);
2987 ret = ceph_osdc_alloc_messages(osd_req, GFP_NOIO);
2991 rbd_osd_submit(osd_req);
3017 struct ceph_osd_request *osd_req;
3023 osd_req = __rbd_obj_add_osd_request(obj_req, &rbd_empty_snapc, 1);
3024 if (IS_ERR(osd_req))
3025 return PTR_ERR(osd_req);
3027 ret = rbd_osd_setup_copyup(osd_req, 0, bytes);
3031 rbd_osd_format_write(osd_req);
3033 ret = ceph_osdc_alloc_messages(osd_req, GFP_NOIO);
3037 rbd_osd_submit(osd_req);
3044 struct ceph_osd_request *osd_req;
3054 osd_req = rbd_obj_add_osd_request(obj_req, num_ops);
3055 if (IS_ERR(osd_req))
3056 return PTR_ERR(osd_req);
3059 ret = rbd_osd_setup_copyup(osd_req, which++, bytes);
3064 rbd_osd_setup_write_ops(osd_req, which);
3065 rbd_osd_format_write(osd_req);
3067 ret = ceph_osdc_alloc_messages(osd_req, GFP_NOIO);
3071 rbd_osd_submit(osd_req);