aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/block
diff options
context:
space:
mode:
authorAlex Elder <elder@inktank.com>2013-01-20 15:44:42 -0500
committerSage Weil <sage@inktank.com>2013-02-13 21:29:09 -0500
commit9f20e02a53b944a54a35b9f0db1243cd64872f7d (patch)
tree415489668f41d37ffaa0ef99699ee001f4ec140d /drivers/block
parent36be9a761844e186f629f463b665945df4f67766 (diff)
rbd: get rid of rbd_req_sync_exec()
Get rid rbd_req_sync_exec() because it is no longer used. That eliminates the last use of rbd_req_sync_op(), so get rid of that too. And finally, that leaves rbd_do_request() unreferenced, so get rid of that. Signed-off-by: Alex Elder <elder@inktank.com> Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
Diffstat (limited to 'drivers/block')
-rw-r--r--drivers/block/rbd.c160
1 files changed, 0 insertions, 160 deletions
diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
index d10649f2e346..4ea89917bb92 100644
--- a/drivers/block/rbd.c
+++ b/drivers/block/rbd.c
@@ -1162,126 +1162,6 @@ static void rbd_osd_req_op_destroy(struct ceph_osd_req_op *op)
1162 kfree(op); 1162 kfree(op);
1163} 1163}
1164 1164
1165/*
1166 * Send ceph osd request
1167 */
1168static int rbd_do_request(struct request *rq,
1169 struct rbd_device *rbd_dev,
1170 struct ceph_snap_context *snapc,
1171 u64 snapid,
1172 const char *object_name, u64 ofs, u64 len,
1173 struct bio *bio,
1174 struct page **pages,
1175 int num_pages,
1176 int flags,
1177 struct ceph_osd_req_op *op,
1178 void (*rbd_cb)(struct ceph_osd_request *,
1179 struct ceph_msg *),
1180 u64 *ver)
1181{
1182 struct ceph_osd_client *osdc;
1183 struct ceph_osd_request *osd_req;
1184 struct timespec mtime = CURRENT_TIME;
1185 int ret;
1186
1187 dout("rbd_do_request object_name=%s ofs=%llu len=%llu\n",
1188 object_name, (unsigned long long) ofs,
1189 (unsigned long long) len);
1190
1191 osdc = &rbd_dev->rbd_client->client->osdc;
1192 osd_req = ceph_osdc_alloc_request(osdc, snapc, 1, false, GFP_NOIO);
1193 if (!osd_req)
1194 return -ENOMEM;
1195
1196 osd_req->r_flags = flags;
1197 osd_req->r_pages = pages;
1198 if (bio) {
1199 osd_req->r_bio = bio;
1200 bio_get(osd_req->r_bio);
1201 }
1202
1203 osd_req->r_callback = rbd_cb;
1204 osd_req->r_priv = NULL;
1205
1206 strncpy(osd_req->r_oid, object_name, sizeof(osd_req->r_oid));
1207 osd_req->r_oid_len = strlen(osd_req->r_oid);
1208
1209 osd_req->r_file_layout = rbd_dev->layout; /* struct */
1210 osd_req->r_num_pages = calc_pages_for(ofs, len);
1211 osd_req->r_page_alignment = ofs & ~PAGE_MASK;
1212
1213 ceph_osdc_build_request(osd_req, ofs, len, 1, op,
1214 snapc, snapid, &mtime);
1215
1216 if (op->op == CEPH_OSD_OP_WATCH && op->watch.flag) {
1217 ceph_osdc_set_request_linger(osdc, osd_req);
1218 rbd_dev->watch_request = osd_req;
1219 }
1220
1221 ret = ceph_osdc_start_request(osdc, osd_req, false);
1222 if (ret < 0)
1223 goto done_err;
1224
1225 if (!rbd_cb) {
1226 u64 version;
1227
1228 ret = ceph_osdc_wait_request(osdc, osd_req);
1229 version = le64_to_cpu(osd_req->r_reassert_version.version);
1230 if (ver)
1231 *ver = version;
1232 dout("reassert_ver=%llu\n", (unsigned long long) version);
1233 ceph_osdc_put_request(osd_req);
1234 }
1235 return ret;
1236
1237done_err:
1238 if (bio)
1239 bio_chain_put(osd_req->r_bio);
1240 ceph_osdc_put_request(osd_req);
1241
1242 return ret;
1243}
1244
1245/*
1246 * Do a synchronous ceph osd operation
1247 */
1248static int rbd_req_sync_op(struct rbd_device *rbd_dev,
1249 int flags,
1250 struct ceph_osd_req_op *op,
1251 const char *object_name,
1252 u64 ofs, u64 inbound_size,
1253 char *inbound,
1254 u64 *ver)
1255{
1256 int ret;
1257 struct page **pages;
1258 int num_pages;
1259
1260 rbd_assert(op != NULL);
1261
1262 num_pages = calc_pages_for(ofs, inbound_size);
1263 pages = ceph_alloc_page_vector(num_pages, GFP_KERNEL);
1264 if (IS_ERR(pages))
1265 return PTR_ERR(pages);
1266
1267 ret = rbd_do_request(NULL, rbd_dev, NULL, CEPH_NOSNAP,
1268 object_name, ofs, inbound_size, NULL,
1269 pages, num_pages,
1270 flags,
1271 op,
1272 NULL,
1273 ver);
1274 if (ret < 0)
1275 goto done;
1276
1277 if ((flags & CEPH_OSD_FLAG_READ) && inbound)
1278 ret = ceph_copy_from_page_vector(pages, inbound, ofs, ret);
1279
1280done:
1281 ceph_release_page_vector(pages, num_pages);
1282 return ret;
1283}
1284
1285static int rbd_obj_request_submit(struct ceph_osd_client *osdc, 1165static int rbd_obj_request_submit(struct ceph_osd_client *osdc,
1286 struct rbd_obj_request *obj_request) 1166 struct rbd_obj_request *obj_request)
1287{ 1167{
@@ -1317,45 +1197,6 @@ static void rbd_obj_request_complete(struct rbd_obj_request *obj_request)
1317 complete_all(&obj_request->completion); 1197 complete_all(&obj_request->completion);
1318} 1198}
1319 1199
1320/*
1321 * Synchronous osd object method call
1322 */
1323static int rbd_req_sync_exec(struct rbd_device *rbd_dev,
1324 const char *object_name,
1325 const char *class_name,
1326 const char *method_name,
1327 const char *outbound,
1328 size_t outbound_size,
1329 char *inbound,
1330 size_t inbound_size,
1331 u64 *ver)
1332{
1333 struct ceph_osd_req_op *op;
1334 int ret;
1335
1336 /*
1337 * Any input parameters required by the method we're calling
1338 * will be sent along with the class and method names as
1339 * part of the message payload. That data and its size are
1340 * supplied via the indata and indata_len fields (named from
1341 * the perspective of the server side) in the OSD request
1342 * operation.
1343 */
1344 op = rbd_osd_req_op_create(CEPH_OSD_OP_CALL, class_name,
1345 method_name, outbound, outbound_size);
1346 if (!op)
1347 return -ENOMEM;
1348
1349 ret = rbd_req_sync_op(rbd_dev, CEPH_OSD_FLAG_READ, op,
1350 object_name, 0, inbound_size, inbound,
1351 ver);
1352
1353 rbd_osd_req_op_destroy(op);
1354
1355 dout("cls_exec returned %d\n", ret);
1356 return ret;
1357}
1358
1359static void rbd_osd_read_callback(struct rbd_obj_request *obj_request, 1200static void rbd_osd_read_callback(struct rbd_obj_request *obj_request,
1360 struct ceph_osd_op *op) 1201 struct ceph_osd_op *op)
1361{ 1202{
@@ -2831,7 +2672,6 @@ static int _rbd_dev_v2_snap_size(struct rbd_device *rbd_dev, u64 snap_id,
2831 __le64 size; 2672 __le64 size;
2832 } __attribute__ ((packed)) size_buf = { 0 }; 2673 } __attribute__ ((packed)) size_buf = { 0 };
2833 2674
2834 (void) rbd_req_sync_exec; /* Avoid a warning */
2835 ret = rbd_obj_method_sync(rbd_dev, rbd_dev->header_name, 2675 ret = rbd_obj_method_sync(rbd_dev, rbd_dev->header_name,
2836 "rbd", "get_size", 2676 "rbd", "get_size",
2837 (char *) &snapid, sizeof (snapid), 2677 (char *) &snapid, sizeof (snapid),