From: nikita Date: Wed, 19 Jul 2006 14:52:19 +0000 (+0000) Subject: fld_cache_delete(): use safe hlist iteration X-Git-Tag: v1_8_0_110~486^2~1384 X-Git-Url: https://git.whamcloud.com/gitweb?a=commitdiff_plain;h=d4aed5c0ca40f29737b766ecc5e3cd755ec109fe;p=fs%2Flustre-release.git fld_cache_delete(): use safe hlist iteration --- diff --git a/lustre/fld/fld_cache.c b/lustre/fld/fld_cache.c index 84863ae..da1b56b 100644 --- a/lustre/fld/fld_cache.c +++ b/lustre/fld/fld_cache.c @@ -75,13 +75,13 @@ fld_cache_init(int size) OBD_FREE_PTR(cache); RETURN(ERR_PTR(-ENOMEM)); } - + for (i = 0; i < size; i++) INIT_HLIST_HEAD(&cache->fci_hash[i]); CDEBUG(D_INFO|D_WARNING, "FLD cache size %d\n", size); - + RETURN(cache); } EXPORT_SYMBOL(fld_cache_init); @@ -92,6 +92,7 @@ fld_cache_fini(struct fld_cache_info *cache) struct fld_cache_entry *flde; struct hlist_head *bucket; struct hlist_node *scan; + struct hlist_node *next; int i; ENTRY; @@ -101,7 +102,7 @@ fld_cache_fini(struct fld_cache_info *cache) spin_lock(&cache->fci_lock); for (i = 0; i < cache->fci_size; i++) { bucket = cache->fci_hash + i; - hlist_for_each_entry(flde, scan, bucket, fce_list) { + hlist_for_each_entry_safe(flde, scan, next, bucket, fce_list) { hlist_del_init(&flde->fce_list); OBD_FREE_PTR(flde); } @@ -143,7 +144,7 @@ fld_cache_insert(struct fld_cache_info *cache, INIT_HLIST_NODE(&flde->fce_list); flde->fce_mds = mds; flde->fce_seq = seq; - + hlist_add_head(&flde->fce_list, bucket); EXIT;