diff options
-rw-r--r-- | net/ceph/osd_client.c | 14 |
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 | ||
1432 | static void complete_request(struct ceph_osd_request *req) | 1428 | static 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 | ||
1571 | done: | 1571 | done: |
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); |