diff options
Diffstat (limited to 'net/ceph/osd_client.c')
-rw-r--r-- | net/ceph/osd_client.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c index 939be67199ca..0c5bf2fb5075 100644 --- a/net/ceph/osd_client.c +++ b/net/ceph/osd_client.c | |||
@@ -1314,8 +1314,14 @@ static void __send_request(struct ceph_osd_client *osdc, | |||
1314 | list_move_tail(&req->r_req_lru_item, &osdc->req_lru); | 1314 | list_move_tail(&req->r_req_lru_item, &osdc->req_lru); |
1315 | 1315 | ||
1316 | ceph_msg_get(req->r_request); /* send consumes a ref */ | 1316 | ceph_msg_get(req->r_request); /* send consumes a ref */ |
1317 | ceph_con_send(&req->r_osd->o_con, req->r_request); | 1317 | |
1318 | /* Mark the request unsafe if this is the first timet's being sent. */ | ||
1319 | |||
1320 | if (!req->r_sent && req->r_unsafe_callback) | ||
1321 | req->r_unsafe_callback(req, true); | ||
1318 | req->r_sent = req->r_osd->o_incarnation; | 1322 | req->r_sent = req->r_osd->o_incarnation; |
1323 | |||
1324 | ceph_con_send(&req->r_osd->o_con, req->r_request); | ||
1319 | } | 1325 | } |
1320 | 1326 | ||
1321 | /* | 1327 | /* |
@@ -1403,8 +1409,8 @@ static void handle_osds_timeout(struct work_struct *work) | |||
1403 | 1409 | ||
1404 | static void complete_request(struct ceph_osd_request *req) | 1410 | static void complete_request(struct ceph_osd_request *req) |
1405 | { | 1411 | { |
1406 | if (req->r_safe_callback) | 1412 | if (req->r_unsafe_callback) |
1407 | req->r_safe_callback(req, NULL); | 1413 | req->r_unsafe_callback(req, false); |
1408 | complete_all(&req->r_safe_completion); /* fsync waiter */ | 1414 | complete_all(&req->r_safe_completion); /* fsync waiter */ |
1409 | } | 1415 | } |
1410 | 1416 | ||