diff options
author | Sage Weil <sage@newdream.net> | 2010-05-29 12:41:23 -0400 |
---|---|---|
committer | Sage Weil <sage@newdream.net> | 2010-05-29 12:42:03 -0400 |
commit | a922d38fd10d55d5033f10df15baf966e8f5b18c (patch) | |
tree | 306f73dedd5482f09bdac6dc9ecb5285f95b316f /fs/ceph/super.c | |
parent | dd1c9057366f329911180e9000e2b425f23fc287 (diff) |
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>
Diffstat (limited to 'fs/ceph/super.c')
-rw-r--r-- | fs/ceph/super.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/fs/ceph/super.c b/fs/ceph/super.c index 9b46bb951e1f..5cf6fba8b705 100644 --- a/fs/ceph/super.c +++ b/fs/ceph/super.c | |||
@@ -669,9 +669,17 @@ static void ceph_destroy_client(struct ceph_client *client) | |||
669 | 669 | ||
670 | /* unmount */ | 670 | /* unmount */ |
671 | ceph_mdsc_stop(&client->mdsc); | 671 | ceph_mdsc_stop(&client->mdsc); |
672 | ceph_monc_stop(&client->monc); | ||
673 | ceph_osdc_stop(&client->osdc); | 672 | ceph_osdc_stop(&client->osdc); |
674 | 673 | ||
674 | /* | ||
675 | * make sure mds and osd connections close out before destroying | ||
676 | * the auth module, which is needed to free those connections' | ||
677 | * ceph_authorizers. | ||
678 | */ | ||
679 | ceph_msgr_flush(); | ||
680 | |||
681 | ceph_monc_stop(&client->monc); | ||
682 | |||
675 | ceph_adjust_min_caps(-client->min_caps); | 683 | ceph_adjust_min_caps(-client->min_caps); |
676 | 684 | ||
677 | ceph_debugfs_client_cleanup(client); | 685 | ceph_debugfs_client_cleanup(client); |