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: Sage Weil <sage@newdream.net>
This commit is contained in:
		
					parent
					
						
							
								dd1c905736
							
						
					
				
			
			
				commit
				
					
						a922d38fd1
					
				
			
		
					 3 changed files with 16 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -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
 | 
			
		||||
 */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue