Loading drivers/block/rbd.c +28 −21 Original line number Diff line number Diff line Loading @@ -1489,28 +1489,31 @@ static void rbd_osd_req_callback(struct ceph_osd_request *osd_req, rbd_obj_request_complete(obj_request); } static void rbd_osd_req_format(struct rbd_obj_request *obj_request, bool write_request) static void rbd_osd_req_format_read(struct rbd_obj_request *obj_request) { struct rbd_img_request *img_request = obj_request->img_request; struct ceph_osd_request *osd_req = obj_request->osd_req; struct ceph_snap_context *snapc = NULL; u64 snap_id = CEPH_NOSNAP; struct timespec *mtime = NULL; struct timespec now; u64 snap_id; rbd_assert(osd_req != NULL); if (write_request) { now = CURRENT_TIME; mtime = &now; if (img_request) snapc = img_request->snapc; } else if (img_request) { snap_id = img_request->snap_id; snap_id = img_request ? img_request->snap_id : CEPH_NOSNAP; ceph_osdc_build_request(osd_req, obj_request->offset, NULL, snap_id, NULL); } static void rbd_osd_req_format_write(struct rbd_obj_request *obj_request) { struct rbd_img_request *img_request = obj_request->img_request; struct ceph_osd_request *osd_req = obj_request->osd_req; struct ceph_snap_context *snapc; struct timespec mtime = CURRENT_TIME; rbd_assert(osd_req != NULL); snapc = img_request ? img_request->snapc : NULL; ceph_osdc_build_request(osd_req, obj_request->offset, snapc, snap_id, mtime); snapc, CEPH_NOSNAP, &mtime); } static struct ceph_osd_request *rbd_osd_req_create( Loading Loading @@ -1845,7 +1848,11 @@ static int rbd_img_request_fill_bio(struct rbd_img_request *img_request, 0, 0); osd_req_op_extent_osd_data_bio(osd_req, 0, obj_request->bio_list, obj_request->length); rbd_osd_req_format(obj_request, write_request); if (write_request) rbd_osd_req_format_write(obj_request); else rbd_osd_req_format_read(obj_request); obj_request->img_offset = img_offset; rbd_img_obj_request_add(img_request, obj_request); Loading Loading @@ -1969,7 +1976,7 @@ static int rbd_img_obj_exists_submit(struct rbd_obj_request *obj_request) osd_req_op_init(stat_request->osd_req, 0, CEPH_OSD_OP_STAT); osd_req_op_raw_data_in_pages(stat_request->osd_req, 0, pages, size, 0, false, false); rbd_osd_req_format(stat_request, false); rbd_osd_req_format_read(stat_request); osdc = &rbd_dev->rbd_client->client->osdc; ret = rbd_obj_request_submit(osdc, stat_request); Loading Loading @@ -2091,7 +2098,7 @@ static int rbd_obj_notify_ack(struct rbd_device *rbd_dev, osd_req_op_watch_init(obj_request->osd_req, 0, CEPH_OSD_OP_NOTIFY_ACK, notify_id, ver, 0); rbd_osd_req_format(obj_request, false); rbd_osd_req_format_read(obj_request); ret = rbd_obj_request_submit(osdc, obj_request); out: Loading Loading @@ -2161,7 +2168,7 @@ static int rbd_dev_header_watch_sync(struct rbd_device *rbd_dev, int start) osd_req_op_watch_init(obj_request->osd_req, 0, CEPH_OSD_OP_WATCH, rbd_dev->watch_event->cookie, rbd_dev->header.obj_version, start); rbd_osd_req_format(obj_request, true); rbd_osd_req_format_write(obj_request); ret = rbd_obj_request_submit(osdc, obj_request); if (ret) Loading Loading @@ -2262,7 +2269,7 @@ static int rbd_obj_method_sync(struct rbd_device *rbd_dev, osd_req_op_cls_response_data_pages(obj_request->osd_req, 0, obj_request->pages, inbound_size, 0, false, false); rbd_osd_req_format(obj_request, false); rbd_osd_req_format_read(obj_request); ret = rbd_obj_request_submit(osdc, obj_request); if (ret) Loading Loading @@ -2473,7 +2480,7 @@ static int rbd_obj_read_sync(struct rbd_device *rbd_dev, obj_request->length, obj_request->offset & ~PAGE_MASK, false, false); rbd_osd_req_format(obj_request, false); rbd_osd_req_format_read(obj_request); ret = rbd_obj_request_submit(osdc, obj_request); if (ret) Loading Loading
drivers/block/rbd.c +28 −21 Original line number Diff line number Diff line Loading @@ -1489,28 +1489,31 @@ static void rbd_osd_req_callback(struct ceph_osd_request *osd_req, rbd_obj_request_complete(obj_request); } static void rbd_osd_req_format(struct rbd_obj_request *obj_request, bool write_request) static void rbd_osd_req_format_read(struct rbd_obj_request *obj_request) { struct rbd_img_request *img_request = obj_request->img_request; struct ceph_osd_request *osd_req = obj_request->osd_req; struct ceph_snap_context *snapc = NULL; u64 snap_id = CEPH_NOSNAP; struct timespec *mtime = NULL; struct timespec now; u64 snap_id; rbd_assert(osd_req != NULL); if (write_request) { now = CURRENT_TIME; mtime = &now; if (img_request) snapc = img_request->snapc; } else if (img_request) { snap_id = img_request->snap_id; snap_id = img_request ? img_request->snap_id : CEPH_NOSNAP; ceph_osdc_build_request(osd_req, obj_request->offset, NULL, snap_id, NULL); } static void rbd_osd_req_format_write(struct rbd_obj_request *obj_request) { struct rbd_img_request *img_request = obj_request->img_request; struct ceph_osd_request *osd_req = obj_request->osd_req; struct ceph_snap_context *snapc; struct timespec mtime = CURRENT_TIME; rbd_assert(osd_req != NULL); snapc = img_request ? img_request->snapc : NULL; ceph_osdc_build_request(osd_req, obj_request->offset, snapc, snap_id, mtime); snapc, CEPH_NOSNAP, &mtime); } static struct ceph_osd_request *rbd_osd_req_create( Loading Loading @@ -1845,7 +1848,11 @@ static int rbd_img_request_fill_bio(struct rbd_img_request *img_request, 0, 0); osd_req_op_extent_osd_data_bio(osd_req, 0, obj_request->bio_list, obj_request->length); rbd_osd_req_format(obj_request, write_request); if (write_request) rbd_osd_req_format_write(obj_request); else rbd_osd_req_format_read(obj_request); obj_request->img_offset = img_offset; rbd_img_obj_request_add(img_request, obj_request); Loading Loading @@ -1969,7 +1976,7 @@ static int rbd_img_obj_exists_submit(struct rbd_obj_request *obj_request) osd_req_op_init(stat_request->osd_req, 0, CEPH_OSD_OP_STAT); osd_req_op_raw_data_in_pages(stat_request->osd_req, 0, pages, size, 0, false, false); rbd_osd_req_format(stat_request, false); rbd_osd_req_format_read(stat_request); osdc = &rbd_dev->rbd_client->client->osdc; ret = rbd_obj_request_submit(osdc, stat_request); Loading Loading @@ -2091,7 +2098,7 @@ static int rbd_obj_notify_ack(struct rbd_device *rbd_dev, osd_req_op_watch_init(obj_request->osd_req, 0, CEPH_OSD_OP_NOTIFY_ACK, notify_id, ver, 0); rbd_osd_req_format(obj_request, false); rbd_osd_req_format_read(obj_request); ret = rbd_obj_request_submit(osdc, obj_request); out: Loading Loading @@ -2161,7 +2168,7 @@ static int rbd_dev_header_watch_sync(struct rbd_device *rbd_dev, int start) osd_req_op_watch_init(obj_request->osd_req, 0, CEPH_OSD_OP_WATCH, rbd_dev->watch_event->cookie, rbd_dev->header.obj_version, start); rbd_osd_req_format(obj_request, true); rbd_osd_req_format_write(obj_request); ret = rbd_obj_request_submit(osdc, obj_request); if (ret) Loading Loading @@ -2262,7 +2269,7 @@ static int rbd_obj_method_sync(struct rbd_device *rbd_dev, osd_req_op_cls_response_data_pages(obj_request->osd_req, 0, obj_request->pages, inbound_size, 0, false, false); rbd_osd_req_format(obj_request, false); rbd_osd_req_format_read(obj_request); ret = rbd_obj_request_submit(osdc, obj_request); if (ret) Loading Loading @@ -2473,7 +2480,7 @@ static int rbd_obj_read_sync(struct rbd_device *rbd_dev, obj_request->length, obj_request->offset & ~PAGE_MASK, false, false); rbd_osd_req_format(obj_request, false); rbd_osd_req_format_read(obj_request); ret = rbd_obj_request_submit(osdc, obj_request); if (ret) Loading