diff options
| -rw-r--r-- | fs/ceph/messenger.c | 6 | ||||
| -rw-r--r-- | fs/ceph/messenger.h | 1 | ||||
| -rw-r--r-- | fs/ceph/super.c | 10 |
3 files changed, 16 insertions, 1 deletions
diff --git a/fs/ceph/messenger.c b/fs/ceph/messenger.c index 60b74839ebec..64b8b1f7863d 100644 --- a/fs/ceph/messenger.c +++ b/fs/ceph/messenger.c | |||
| @@ -120,6 +120,12 @@ void ceph_msgr_exit(void) | |||
| 120 | destroy_workqueue(ceph_msgr_wq); | 120 | destroy_workqueue(ceph_msgr_wq); |
| 121 | } | 121 | } |
| 122 | 122 | ||
| 123 | void ceph_msgr_flush() | ||
| 124 | { | ||
| 125 | flush_workqueue(ceph_msgr_wq); | ||
| 126 | } | ||
| 127 | |||
| 128 | |||
| 123 | /* | 129 | /* |
| 124 | * socket callback functions | 130 | * socket callback functions |
| 125 | */ | 131 | */ |
diff --git a/fs/ceph/messenger.h b/fs/ceph/messenger.h index 00a9430b1ffc..76fbc957bc13 100644 --- a/fs/ceph/messenger.h +++ b/fs/ceph/messenger.h | |||
| @@ -213,6 +213,7 @@ extern int ceph_parse_ips(const char *c, const char *end, | |||
| 213 | 213 | ||
| 214 | extern int ceph_msgr_init(void); | 214 | extern int ceph_msgr_init(void); |
| 215 | extern void ceph_msgr_exit(void); | 215 | extern void ceph_msgr_exit(void); |
| 216 | extern void ceph_msgr_flush(void); | ||
| 216 | 217 | ||
| 217 | extern struct ceph_messenger *ceph_messenger_create( | 218 | extern struct ceph_messenger *ceph_messenger_create( |
| 218 | struct ceph_entity_addr *myaddr); | 219 | struct ceph_entity_addr *myaddr); |
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); |
