summaryrefslogtreecommitdiffstats
path: root/fs/overlayfs
diff options
context:
space:
mode:
authorMiklos Szeredi <mszeredi@redhat.com>2016-12-16 05:02:57 -0500
committerMiklos Szeredi <mszeredi@redhat.com>2016-12-16 05:02:57 -0500
commit688ea0e5a0e2278e2fcd0014324ab1ba68e70ad7 (patch)
treee3e8c4924f694e485253ee5a2b512b30b4bcef7a /fs/overlayfs
parentd15951198eaccb92c6b49e62cb72f5ff62da2236 (diff)
ovl: allow redirect_dir to default to "on"
This patch introduces a kernel config option and a module param. Both can be used independently to turn the default value of redirect_dir on or off. Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Diffstat (limited to 'fs/overlayfs')
-rw-r--r--fs/overlayfs/Kconfig14
-rw-r--r--fs/overlayfs/super.c5
2 files changed, 19 insertions, 0 deletions
diff --git a/fs/overlayfs/Kconfig b/fs/overlayfs/Kconfig
index 34355818a2e0..0daac5112f7a 100644
--- a/fs/overlayfs/Kconfig
+++ b/fs/overlayfs/Kconfig
@@ -8,3 +8,17 @@ config OVERLAY_FS
8 merged with the 'upper' object. 8 merged with the 'upper' object.
9 9
10 For more information see Documentation/filesystems/overlayfs.txt 10 For more information see Documentation/filesystems/overlayfs.txt
11
12config OVERLAY_FS_REDIRECT_DIR
13 bool "Overlayfs: turn on redirect dir feature by default"
14 depends on OVERLAY_FS
15 help
16 If this config option is enabled then overlay filesystems will use
17 redirects when renaming directories by default. In this case it is
18 still possible to turn off redirects globally with the
19 "redirect_dir=off" module option or on a filesystem instance basis
20 with the "redirect_dir=off" mount option.
21
22 Note, that redirects are not backward compatible. That is, mounting
23 an overlay which has redirects on a kernel that doesn't support this
24 feature will have unexpected results.
diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c
index 520f9ab0e9ef..2750aef24d16 100644
--- a/fs/overlayfs/super.c
+++ b/fs/overlayfs/super.c
@@ -28,6 +28,10 @@ struct ovl_dir_cache;
28 28
29#define OVL_MAX_STACK 500 29#define OVL_MAX_STACK 500
30 30
31static bool ovl_redirect_dir_def = IS_ENABLED(CONFIG_OVERLAY_FS_REDIRECT_DIR);
32module_param_named(redirect_dir, ovl_redirect_dir_def, bool, 0644);
33MODULE_PARM_DESC(ovl_redirect_dir_def,
34 "Default to on or off for the redirect_dir feature");
31 35
32static void ovl_dentry_release(struct dentry *dentry) 36static void ovl_dentry_release(struct dentry *dentry)
33{ 37{
@@ -702,6 +706,7 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent)
702 if (!ufs) 706 if (!ufs)
703 goto out; 707 goto out;
704 708
709 ufs->config.redirect_dir = ovl_redirect_dir_def;
705 err = ovl_parse_opt((char *) data, &ufs->config); 710 err = ovl_parse_opt((char *) data, &ufs->config);
706 if (err) 711 if (err)
707 goto out_free_config; 712 goto out_free_config;