summarylogtreecommitdiffstats
path: root/0001-Linux-4.10-have_submounts-is-gone.patch
diff options
context:
space:
mode:
Diffstat (limited to '0001-Linux-4.10-have_submounts-is-gone.patch')
-rw-r--r--0001-Linux-4.10-have_submounts-is-gone.patch99
1 files changed, 0 insertions, 99 deletions
diff --git a/0001-Linux-4.10-have_submounts-is-gone.patch b/0001-Linux-4.10-have_submounts-is-gone.patch
deleted file mode 100644
index 429a1126dc92..000000000000
--- a/0001-Linux-4.10-have_submounts-is-gone.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From 20fd9eadba0b46033571debc8927f29fc1b6c246 Mon Sep 17 00:00:00 2001
-From: Mark Vitale <mvitale@sinenomine.net>
-Date: Wed, 7 Dec 2016 11:11:45 -0500
-Subject: [PATCH] Linux 4.10: have_submounts is gone
-
-Linux commit f74e7b33c37e vfs: remove unused have_submounts() function
-(v4.10-rc2) removes have_submounts from the tree after providing a
-replacement (path_has_submounts) for its last in-tree caller, autofs.
-
-However, it turns out that OpenAFS is better off not using the new
-path_has_submounts. Instead, OpenAFS could/should have stopped using
-have_submounts() much earlier, back in Linux v3.18 when d_invalidate
-became void. At that time, most in-tree callers of have_submounts had
-already been converted to use check_submounts_and_drop back in v3.12.
-At v3.18, a series of commits modified check_submounts_and_drop to
-automatically remove child submounts (instead of returning -EBUSY if a
-submount was detected), then subsumed it into d_invalidate. The end
-result was that VFS now implicitly handles much of the housekeeping
-previously called explicitly by the various filesystem d_revalidate
-routines:
-- shrink_dcache_parent
-- check_submounts_and_drop
-- d_drop
-- d_invalidate
-All in-tree filesystem d_revalidate routines were updated to take
-advantage of this new VFS support.
-
-Modify afs_linux_dentry_revalidate to no longer perform any special
-handling for invalid dentries when D_INVALIDATE_IS_VOID. Instead, allow
-our VFS caller to properly clean up any invalid dentry when we return 0.
-
-Reviewed-on: https://gerrit.openafs.org/12506
-Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
-Tested-by: BuildBot <buildbot@rampaginggeek.com>
-Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
-(cherry picked from commit 789319bf0f2b26ad67995f8cbe88cee87a1bbdc0)
-
-Change-Id: I7ed22338e7896f69a204be78ed0a4f6136a3dab8
----
- src/afs/LINUX/osi_vnodeops.c | 27 ++++++++++++++++++++-------
- 1 file changed, 20 insertions(+), 7 deletions(-)
-
-diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c
-index 4a8f0e9dc..816cdddd9 100644
---- a/src/afs/LINUX/osi_vnodeops.c
-+++ b/src/afs/LINUX/osi_vnodeops.c
-@@ -1318,6 +1318,24 @@ afs_linux_dentry_revalidate(struct dentry *dp, int flags)
-
- good_dentry:
- valid = 1;
-+ goto done;
-+
-+ bad_dentry:
-+ valid = 0;
-+#ifndef D_INVALIDATE_IS_VOID
-+ /* When (v3.18) d_invalidate was converted to void, it also started
-+ * being called automatically from revalidate, and automatically
-+ * handled:
-+ * - shrink_dcache_parent
-+ * - automatic detach of submounts
-+ * - d_drop
-+ * Therefore, after that point, OpenAFS revalidate logic no longer needs
-+ * to do any of those things itself for invalid dentry structs. We only need
-+ * to tell VFS it's invalid (by returning 0), and VFS will handle the rest.
-+ */
-+ if (have_submounts(dp))
-+ valid = 1;
-+#endif
-
- done:
- /* Clean up */
-@@ -1328,6 +1346,7 @@ afs_linux_dentry_revalidate(struct dentry *dp, int flags)
- if (credp)
- crfree(credp);
-
-+#ifndef D_INVALIDATE_IS_VOID
- if (!valid) {
- /*
- * If we had a negative lookup for the name we want to forcibly
-@@ -1340,15 +1359,9 @@ afs_linux_dentry_revalidate(struct dentry *dp, int flags)
- } else
- d_invalidate(dp);
- }
--
-+#endif
- return valid;
-
-- bad_dentry:
-- if (have_submounts(dp))
-- valid = 1;
-- else
-- valid = 0;
-- goto done;
- }
-
- static void
---
-2.12.0
-