| From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> |
| Date: Wed, 13 Sep 2017 12:32:34 +0200 |
| Subject: [PATCH] fs/dcache: bring back explicit INIT_HLIST_BL_HEAD init |
| |
| Commit 3d375d78593c ("mm: update callers to use HASH_ZERO flag") removed |
| INIT_HLIST_BL_HEAD and uses the ZERO flag instead for the init. However |
| on RT we have also a spinlock which needs an init call so we can't use |
| that. |
| |
| Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> |
| --- |
| fs/dcache.c | 11 +++++++++++ |
| 1 file changed, 11 insertions(+) |
| |
| --- a/fs/dcache.c |
| +++ b/fs/dcache.c |
| @@ -3143,6 +3143,8 @@ static int __init set_dhash_entries(char |
| |
| static void __init dcache_init_early(void) |
| { |
| + unsigned int loop; |
| + |
| /* If hashes are distributed across NUMA nodes, defer |
| * hash allocation until vmalloc space is available. |
| */ |
| @@ -3159,11 +3161,16 @@ static void __init dcache_init_early(voi |
| NULL, |
| 0, |
| 0); |
| + |
| + for (loop = 0; loop < (1U << d_hash_shift); loop++) |
| + INIT_HLIST_BL_HEAD(dentry_hashtable + loop); |
| + |
| d_hash_shift = 32 - d_hash_shift; |
| } |
| |
| static void __init dcache_init(void) |
| { |
| + unsigned int loop; |
| /* |
| * A constructor could be added for stable state like the lists, |
| * but it is probably not worth it because of the cache nature |
| @@ -3187,6 +3194,10 @@ static void __init dcache_init(void) |
| NULL, |
| 0, |
| 0); |
| + |
| + for (loop = 0; loop < (1U << d_hash_shift); loop++) |
| + INIT_HLIST_BL_HEAD(dentry_hashtable + loop); |
| + |
| d_hash_shift = 32 - d_hash_shift; |
| } |
| |