diff options
Diffstat (limited to '')
-rw-r--r-- | debian/patches-rt/0184-fs-dcache-use-swait_queue-instead-of-waitqueue.patch | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/debian/patches-rt/0184-fs-dcache-use-swait_queue-instead-of-waitqueue.patch b/debian/patches-rt/0184-fs-dcache-use-swait_queue-instead-of-waitqueue.patch index 8a43098f4..bd836c1ba 100644 --- a/debian/patches-rt/0184-fs-dcache-use-swait_queue-instead-of-waitqueue.patch +++ b/debian/patches-rt/0184-fs-dcache-use-swait_queue-instead-of-waitqueue.patch @@ -1,8 +1,8 @@ -From aeadd35a13f446ec84a832549b2815fc3de30917 Mon Sep 17 00:00:00 2001 +From 5cdea9eaefef34046668dc341e43f742c74cf980 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 14 Sep 2016 14:35:49 +0200 Subject: [PATCH 184/323] fs/dcache: use swait_queue instead of waitqueue -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/5.10/older/patches-5.10.204-rt100.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/5.10/older/patches-5.10.215-rt107.tar.xz __d_lookup_done() invokes wake_up_all() while holding a hlist_bl_lock() which disables preemption. As a workaround convert it to swait. @@ -24,7 +24,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 12 files changed, 31 insertions(+), 26 deletions(-) diff --git a/fs/afs/dir_silly.c b/fs/afs/dir_silly.c -index dae9a57d7ec0..9a6a0ec4d1fb 100644 +index dae9a57d7ec0c..9a6a0ec4d1fb5 100644 --- a/fs/afs/dir_silly.c +++ b/fs/afs/dir_silly.c @@ -239,7 +239,7 @@ int afs_silly_iput(struct dentry *dentry, struct inode *inode) @@ -37,7 +37,7 @@ index dae9a57d7ec0..9a6a0ec4d1fb 100644 _enter("%p{%pd},%llx", dentry, dentry, vnode->fid.vnode); diff --git a/fs/cifs/readdir.c b/fs/cifs/readdir.c -index 799be3a5d25e..d5165a7da071 100644 +index 799be3a5d25e1..d5165a7da0718 100644 --- a/fs/cifs/readdir.c +++ b/fs/cifs/readdir.c @@ -81,7 +81,7 @@ cifs_prime_dcache(struct dentry *parent, struct qstr *name, @@ -50,10 +50,10 @@ index 799be3a5d25e..d5165a7da071 100644 cifs_dbg(FYI, "%s: for %s\n", __func__, name->name); diff --git a/fs/dcache.c b/fs/dcache.c -index ea0485861d93..1f4255ef8722 100644 +index 976c7474d62a9..4bcd832ace5dc 100644 --- a/fs/dcache.c +++ b/fs/dcache.c -@@ -2518,21 +2518,24 @@ static inline void end_dir_add(struct inode *dir, unsigned n) +@@ -2519,21 +2519,24 @@ static inline void end_dir_add(struct inode *dir, unsigned n) static void d_wait_lookup(struct dentry *dentry) { @@ -89,7 +89,7 @@ index ea0485861d93..1f4255ef8722 100644 { unsigned int hash = name->hash; struct hlist_bl_head *b = in_lookup_hash(parent, hash); -@@ -2647,7 +2650,7 @@ void __d_lookup_done(struct dentry *dentry) +@@ -2648,7 +2651,7 @@ void __d_lookup_done(struct dentry *dentry) hlist_bl_lock(b); dentry->d_flags &= ~DCACHE_PAR_LOOKUP; __hlist_bl_del(&dentry->d_u.d_in_lookup_hash); @@ -99,7 +99,7 @@ index ea0485861d93..1f4255ef8722 100644 hlist_bl_unlock(b); INIT_HLIST_NODE(&dentry->d_u.d_alias); diff --git a/fs/fuse/readdir.c b/fs/fuse/readdir.c -index 14e99ffa57af..eb899feaf82d 100644 +index 14e99ffa57af9..eb899feaf82dd 100644 --- a/fs/fuse/readdir.c +++ b/fs/fuse/readdir.c @@ -160,7 +160,7 @@ static int fuse_direntplus_link(struct file *file, @@ -112,7 +112,7 @@ index 14e99ffa57af..eb899feaf82d 100644 if (!o->nodeid) { /* diff --git a/fs/namei.c b/fs/namei.c -index 3ff954a2bbd1..01e3f8195ee1 100644 +index cb37d7c477e0b..f4961a4af74c5 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -1532,7 +1532,7 @@ static struct dentry *__lookup_slow(const struct qstr *name, @@ -124,7 +124,7 @@ index 3ff954a2bbd1..01e3f8195ee1 100644 /* Don't go there if it's already dead */ if (unlikely(IS_DEADDIR(inode))) -@@ -3085,7 +3085,7 @@ static struct dentry *lookup_open(struct nameidata *nd, struct file *file, +@@ -3079,7 +3079,7 @@ static struct dentry *lookup_open(struct nameidata *nd, struct file *file, struct dentry *dentry; int error, create_error = 0; umode_t mode = op->mode; @@ -134,7 +134,7 @@ index 3ff954a2bbd1..01e3f8195ee1 100644 if (unlikely(IS_DEADDIR(dir_inode))) return ERR_PTR(-ENOENT); diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c -index 9f88ca7b2001..bc8a78ecfe1c 100644 +index 9f88ca7b20015..bc8a78ecfe1c3 100644 --- a/fs/nfs/dir.c +++ b/fs/nfs/dir.c @@ -484,7 +484,7 @@ void nfs_prime_dcache(struct dentry *parent, struct nfs_entry *entry, @@ -156,7 +156,7 @@ index 9f88ca7b2001..bc8a78ecfe1c 100644 struct dentry *res; struct iattr attr = { .ia_valid = ATTR_OPEN }; diff --git a/fs/nfs/unlink.c b/fs/nfs/unlink.c -index b27ebdccef70..f86c98a7ed04 100644 +index b27ebdccef703..f86c98a7ed047 100644 --- a/fs/nfs/unlink.c +++ b/fs/nfs/unlink.c @@ -13,7 +13,7 @@ @@ -178,7 +178,7 @@ index b27ebdccef70..f86c98a7ed04 100644 status = -EBUSY; spin_lock(&dentry->d_lock); diff --git a/fs/proc/base.c b/fs/proc/base.c -index 712948e97991..585d0afd1af6 100644 +index 712948e979911..585d0afd1af61 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -96,6 +96,7 @@ @@ -199,7 +199,7 @@ index 712948e97991..585d0afd1af6 100644 if (IS_ERR(child)) goto end_instantiate; diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c -index aff9593feb73..d1a29668bff8 100644 +index aff9593feb73c..d1a29668bff84 100644 --- a/fs/proc/proc_sysctl.c +++ b/fs/proc/proc_sysctl.c @@ -684,7 +684,7 @@ static bool proc_sys_fill_cache(struct file *file, @@ -212,7 +212,7 @@ index aff9593feb73..d1a29668bff8 100644 if (IS_ERR(child)) return false; diff --git a/include/linux/dcache.h b/include/linux/dcache.h -index 6f95c3300cbb..c1290db778bd 100644 +index 6f95c3300cbbb..c1290db778bdd 100644 --- a/include/linux/dcache.h +++ b/include/linux/dcache.h @@ -106,7 +106,7 @@ struct dentry { @@ -234,7 +234,7 @@ index 6f95c3300cbb..c1290db778bd 100644 extern struct dentry * d_add_ci(struct dentry *, struct inode *, struct qstr *); extern struct dentry * d_exact_alias(struct dentry *, struct inode *); diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h -index 33442fd018a0..4612bb5be6ca 100644 +index 33442fd018a06..4612bb5be6ca4 100644 --- a/include/linux/nfs_xdr.h +++ b/include/linux/nfs_xdr.h @@ -1675,7 +1675,7 @@ struct nfs_unlinkdata { @@ -247,7 +247,7 @@ index 33442fd018a0..4612bb5be6ca 100644 struct nfs_fattr dir_attr; long timeout; diff --git a/kernel/sched/swait.c b/kernel/sched/swait.c -index e1c655f928c7..f230b1ac7f91 100644 +index e1c655f928c74..f230b1ac7f910 100644 --- a/kernel/sched/swait.c +++ b/kernel/sched/swait.c @@ -64,6 +64,7 @@ void swake_up_all(struct swait_queue_head *q) @@ -259,5 +259,5 @@ index e1c655f928c7..f230b1ac7f91 100644 list_splice_init(&q->task_list, &tmp); while (!list_empty(&tmp)) { -- -2.43.0 +2.44.0 |