aboutsummaryrefslogtreecommitdiffstats
path: root/net/ceph/osd_client.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ceph/osd_client.c')
-rw-r--r--net/ceph/osd_client.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c
index 540dd29c9210..dd47889adc4a 100644
--- a/net/ceph/osd_client.c
+++ b/net/ceph/osd_client.c
@@ -1337,10 +1337,6 @@ static void __send_request(struct ceph_osd_client *osdc,
1337 1337
1338 ceph_msg_get(req->r_request); /* send consumes a ref */ 1338 ceph_msg_get(req->r_request); /* send consumes a ref */
1339 1339
1340 /* Mark the request unsafe if this is the first timet's being sent. */
1341
1342 if (!req->r_sent && req->r_unsafe_callback)
1343 req->r_unsafe_callback(req, true);
1344 req->r_sent = req->r_osd->o_incarnation; 1340 req->r_sent = req->r_osd->o_incarnation;
1345 1341
1346 ceph_con_send(&req->r_osd->o_con, req->r_request); 1342 ceph_con_send(&req->r_osd->o_con, req->r_request);
@@ -1431,8 +1427,6 @@ static void handle_osds_timeout(struct work_struct *work)
1431 1427
1432static void complete_request(struct ceph_osd_request *req) 1428static void complete_request(struct ceph_osd_request *req)
1433{ 1429{
1434 if (req->r_unsafe_callback)
1435 req->r_unsafe_callback(req, false);
1436 complete_all(&req->r_safe_completion); /* fsync waiter */ 1430 complete_all(&req->r_safe_completion); /* fsync waiter */
1437} 1431}
1438 1432
@@ -1559,14 +1553,20 @@ static void handle_reply(struct ceph_osd_client *osdc, struct ceph_msg *msg,
1559 mutex_unlock(&osdc->request_mutex); 1553 mutex_unlock(&osdc->request_mutex);
1560 1554
1561 if (!already_completed) { 1555 if (!already_completed) {
1556 if (req->r_unsafe_callback &&
1557 result >= 0 && !(flags & CEPH_OSD_FLAG_ONDISK))
1558 req->r_unsafe_callback(req, true);
1562 if (req->r_callback) 1559 if (req->r_callback)
1563 req->r_callback(req, msg); 1560 req->r_callback(req, msg);
1564 else 1561 else
1565 complete_all(&req->r_completion); 1562 complete_all(&req->r_completion);
1566 } 1563 }
1567 1564
1568 if (flags & CEPH_OSD_FLAG_ONDISK) 1565 if (flags & CEPH_OSD_FLAG_ONDISK) {
1566 if (req->r_unsafe_callback && already_completed)
1567 req->r_unsafe_callback(req, false);
1569 complete_request(req); 1568 complete_request(req);
1569 }
1570 1570
1571done: 1571done:
1572 dout("req=%p req->r_linger=%d\n", req, req->r_linger); 1572 dout("req=%p req->r_linger=%d\n", req, req->r_linger);