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); |
