summaryrefslogtreecommitdiffstats
path: root/debian/patches-rt/0171-fs-dcache-bring-back-explicit-INIT_HLIST_BL_HEAD-ini.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches-rt/0171-fs-dcache-bring-back-explicit-INIT_HLIST_BL_HEAD-ini.patch')
-rw-r--r--debian/patches-rt/0171-fs-dcache-bring-back-explicit-INIT_HLIST_BL_HEAD-ini.patch61
1 files changed, 61 insertions, 0 deletions
diff --git a/debian/patches-rt/0171-fs-dcache-bring-back-explicit-INIT_HLIST_BL_HEAD-ini.patch b/debian/patches-rt/0171-fs-dcache-bring-back-explicit-INIT_HLIST_BL_HEAD-ini.patch
new file mode 100644
index 000000000..c6db9639d
--- /dev/null
+++ b/debian/patches-rt/0171-fs-dcache-bring-back-explicit-INIT_HLIST_BL_HEAD-ini.patch
@@ -0,0 +1,61 @@
+From 54729c769ee68192a795377f27cc479b959ca152 Mon Sep 17 00:00:00 2001
+From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+Date: Wed, 13 Sep 2017 12:32:34 +0200
+Subject: [PATCH 171/347] fs/dcache: bring back explicit INIT_HLIST_BL_HEAD
+ init
+Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.246-rt110.tar.xz
+
+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(+)
+
+diff --git a/fs/dcache.c b/fs/dcache.c
+index 1897833a4668..b5e53587d14b 100644
+--- a/fs/dcache.c
++++ b/fs/dcache.c
+@@ -3077,6 +3077,8 @@ __setup("dhash_entries=", set_dhash_entries);
+
+ 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.
+ */
+@@ -3093,11 +3095,16 @@ static void __init dcache_init_early(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;
+ }
+
+ 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
+@@ -3121,6 +3128,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;
+ }
+
+--
+2.36.1
+