Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a922d38f authored by Sage Weil's avatar Sage Weil
Browse files

ceph: close out mds, osd connections before stopping auth



The auth module (part of the mon_client) is needed to free any
ceph_authorizer(s) used by the mds and osd connections.  Flush the msgr
workqueue before stopping monc to ensure that the destroy_authorizer
auth op is available when those connections are closed out.

Signed-off-by: default avatarSage Weil <sage@newdream.net>
parent dd1c9057
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -120,6 +120,12 @@ void ceph_msgr_exit(void)
	destroy_workqueue(ceph_msgr_wq);
}

void ceph_msgr_flush()
{
	flush_workqueue(ceph_msgr_wq);
}


/*
 * socket callback functions
 */
+1 −0
Original line number Diff line number Diff line
@@ -213,6 +213,7 @@ extern int ceph_parse_ips(const char *c, const char *end,

extern int ceph_msgr_init(void);
extern void ceph_msgr_exit(void);
extern void ceph_msgr_flush(void);

extern struct ceph_messenger *ceph_messenger_create(
	struct ceph_entity_addr *myaddr);
+9 −1
Original line number Diff line number Diff line
@@ -669,9 +669,17 @@ static void ceph_destroy_client(struct ceph_client *client)

	/* unmount */
	ceph_mdsc_stop(&client->mdsc);
	ceph_monc_stop(&client->monc);
	ceph_osdc_stop(&client->osdc);

	/*
	 * make sure mds and osd connections close out before destroying
	 * the auth module, which is needed to free those connections'
	 * ceph_authorizers.
	 */
	ceph_msgr_flush();

	ceph_monc_stop(&client->monc);

	ceph_adjust_min_caps(-client->min_caps);

	ceph_debugfs_client_cleanup(client);