libceph: reformat __reset_osd()
Reformat __reset_osd() into three distinct blocks of code handling the three return cases. Signed-off-by: Alex Elder <elder@inktank.com> Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
This commit is contained in:
parent
7d7c1f6136
commit
c3acb18196
@ -747,31 +747,35 @@ static void remove_old_osds(struct ceph_osd_client *osdc)
|
|||||||
*/
|
*/
|
||||||
static int __reset_osd(struct ceph_osd_client *osdc, struct ceph_osd *osd)
|
static int __reset_osd(struct ceph_osd_client *osdc, struct ceph_osd *osd)
|
||||||
{
|
{
|
||||||
struct ceph_osd_request *req;
|
struct ceph_entity_addr *peer_addr;
|
||||||
int ret = 0;
|
|
||||||
|
|
||||||
dout("__reset_osd %p osd%d\n", osd, osd->o_osd);
|
dout("__reset_osd %p osd%d\n", osd, osd->o_osd);
|
||||||
if (list_empty(&osd->o_requests) &&
|
if (list_empty(&osd->o_requests) &&
|
||||||
list_empty(&osd->o_linger_requests)) {
|
list_empty(&osd->o_linger_requests)) {
|
||||||
__remove_osd(osdc, osd);
|
__remove_osd(osdc, osd);
|
||||||
ret = -ENODEV;
|
|
||||||
} else if (memcmp(&osdc->osdmap->osd_addr[osd->o_osd],
|
return -ENODEV;
|
||||||
&osd->o_con.peer_addr,
|
}
|
||||||
sizeof(osd->o_con.peer_addr)) == 0 &&
|
|
||||||
!ceph_con_opened(&osd->o_con)) {
|
peer_addr = &osdc->osdmap->osd_addr[osd->o_osd];
|
||||||
|
if (!memcmp(peer_addr, &osd->o_con.peer_addr, sizeof (*peer_addr)) &&
|
||||||
|
!ceph_con_opened(&osd->o_con)) {
|
||||||
|
struct ceph_osd_request *req;
|
||||||
|
|
||||||
dout(" osd addr hasn't changed and connection never opened,"
|
dout(" osd addr hasn't changed and connection never opened,"
|
||||||
" letting msgr retry");
|
" letting msgr retry");
|
||||||
/* touch each r_stamp for handle_timeout()'s benfit */
|
/* touch each r_stamp for handle_timeout()'s benfit */
|
||||||
list_for_each_entry(req, &osd->o_requests, r_osd_item)
|
list_for_each_entry(req, &osd->o_requests, r_osd_item)
|
||||||
req->r_stamp = jiffies;
|
req->r_stamp = jiffies;
|
||||||
ret = -EAGAIN;
|
|
||||||
} else {
|
return -EAGAIN;
|
||||||
ceph_con_close(&osd->o_con);
|
|
||||||
ceph_con_open(&osd->o_con, CEPH_ENTITY_TYPE_OSD, osd->o_osd,
|
|
||||||
&osdc->osdmap->osd_addr[osd->o_osd]);
|
|
||||||
osd->o_incarnation++;
|
|
||||||
}
|
}
|
||||||
return ret;
|
|
||||||
|
ceph_con_close(&osd->o_con);
|
||||||
|
ceph_con_open(&osd->o_con, CEPH_ENTITY_TYPE_OSD, osd->o_osd, peer_addr);
|
||||||
|
osd->o_incarnation++;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __insert_osd(struct ceph_osd_client *osdc, struct ceph_osd *new)
|
static void __insert_osd(struct ceph_osd_client *osdc, struct ceph_osd *new)
|
||||||
|
Loading…
Reference in New Issue
Block a user