diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c
index 1766947fc07ab0892027fd5a3fc042e552310275..3ab79f6c4ce8808fa7c72a66adc23dcf0fcfc97d 100644
--- a/fs/ceph/mds_client.c
+++ b/fs/ceph/mds_client.c
@@ -2783,6 +2783,12 @@ void ceph_mdsc_pre_umount(struct ceph_mds_client *mdsc)
 	drop_leases(mdsc);
 	ceph_flush_dirty_caps(mdsc);
 	wait_requests(mdsc);
+
+	/*
+	 * wait for reply handlers to drop their request refs and
+	 * their inode/dcache refs
+	 */
+	ceph_msgr_flush();
 }
 
 /*