From: bobijam Date: Sat, 6 Jun 2009 05:53:03 +0000 (+0000) Subject: Branch HEAD X-Git-Tag: v1_9_220~175 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=653dc8768a885cc8132cb4b79d7cd55fe4696acc;p=fs%2Flustre-release.git Branch HEAD b=18638 i=jinshan.xiong (jay) i=andrew.perepachko (panda) ldlm_lock_put() use RCU to call ldlm_lock_free, so need call synchronize_rcu() to wait a grace period elapsed, so that ldlm_lock_free() get a chance to be called. --- diff --git a/lustre/ldlm/ldlm_lockd.c b/lustre/ldlm/ldlm_lockd.c index 6237590..d6e9757 100644 --- a/lustre/ldlm/ldlm_lockd.c +++ b/lustre/ldlm/ldlm_lockd.c @@ -2449,6 +2449,12 @@ void __exit ldlm_exit(void) CERROR("ldlm_refcount is %d in ldlm_exit!\n", ldlm_refcount); rc = cfs_mem_cache_destroy(ldlm_resource_slab); LASSERTF(rc == 0, "couldn't free ldlm resource slab\n"); +#ifdef __KERNEL__ + /* ldlm_lock_put() use RCU to call ldlm_lock_free, so need call + * synchronize_rcu() to wait a grace period elapsed, so that + * ldlm_lock_free() get a chance to be called. */ + synchronize_rcu(); +#endif rc = cfs_mem_cache_destroy(ldlm_lock_slab); LASSERTF(rc == 0, "couldn't free ldlm lock slab\n"); rc = cfs_mem_cache_destroy(ldlm_interval_slab);