Commit 9d6fcb081a4770c3772c51c59c7251c22716d7bb
1 parent
6b4a3b517a
Exists in
master
and in
4 other branches
ceph: check return value for start_request in writepages
Since we pass the nofail arg, we should never get an error; BUG if we do. (And fix the function to not return an error if __map_request fails.) Signed-off-by: Sage Weil <sage@newdream.net>
Showing 2 changed files with 9 additions and 2 deletions Side-by-side Diff
fs/ceph/addr.c
... | ... | @@ -848,7 +848,8 @@ |
848 | 848 | op->payload_len = cpu_to_le32(len); |
849 | 849 | req->r_request->hdr.data_len = cpu_to_le32(len); |
850 | 850 | |
851 | - ceph_osdc_start_request(&fsc->client->osdc, req, true); | |
851 | + rc = ceph_osdc_start_request(&fsc->client->osdc, req, true); | |
852 | + BUG_ON(rc); | |
852 | 853 | req = NULL; |
853 | 854 | |
854 | 855 | /* continue? */ |
net/ceph/osd_client.c
... | ... | @@ -1677,8 +1677,14 @@ |
1677 | 1677 | */ |
1678 | 1678 | if (req->r_sent == 0) { |
1679 | 1679 | rc = __map_request(osdc, req); |
1680 | - if (rc < 0) | |
1680 | + if (rc < 0) { | |
1681 | + if (nofail) { | |
1682 | + dout("osdc_start_request failed map, " | |
1683 | + " will retry %lld\n", req->r_tid); | |
1684 | + rc = 0; | |
1685 | + } | |
1681 | 1686 | goto out_unlock; |
1687 | + } | |
1682 | 1688 | if (req->r_osd == NULL) { |
1683 | 1689 | dout("send_request %p no up osds in pg\n", req); |
1684 | 1690 | ceph_monc_request_next_osdmap(&osdc->client->monc); |