ovl: allow setting max size of redirect
authorMiklos Szeredi <mszeredi@redhat.com>
Fri, 16 Dec 2016 10:02:57 +0000 (11:02 +0100)
committerMiklos Szeredi <mszeredi@redhat.com>
Fri, 16 Dec 2016 10:02:57 +0000 (11:02 +0100)
Add a module option to allow tuning the max size of absolute redirects.
Default is 256.

Size of relative redirects is naturally limited by the the underlying
filesystem's max filename length (usually 255).

Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
fs/overlayfs/dir.c

index 4257a4a0ed723c4cf1cd40caf4c716d357d9ee8f..b84d61b353cd4c1a315b2fc78655a146905450e5 100644 (file)
 #include <linux/xattr.h>
 #include <linux/security.h>
 #include <linux/cred.h>
+#include <linux/module.h>
 #include <linux/posix_acl.h>
 #include <linux/posix_acl_xattr.h>
 #include <linux/atomic.h>
 #include <linux/ratelimit.h>
 #include "overlayfs.h"
 
+static unsigned short ovl_redirect_max = 256;
+module_param_named(redirect_max, ovl_redirect_max, ushort, 0644);
+MODULE_PARM_DESC(ovl_redirect_max,
+                "Maximum length of absolute redirect xattr value");
+
 void ovl_cleanup(struct inode *wdir, struct dentry *wdentry)
 {
        int err;
@@ -777,13 +783,11 @@ static bool ovl_can_move(struct dentry *dentry)
                !d_is_dir(dentry) || !ovl_type_merge_or_lower(dentry);
 }
 
-#define OVL_REDIRECT_MAX 256
-
 static char *ovl_get_redirect(struct dentry *dentry, bool samedir)
 {
        char *buf, *ret;
        struct dentry *d, *tmp;
-       int buflen = OVL_REDIRECT_MAX + 1;
+       int buflen = ovl_redirect_max + 1;
 
        if (samedir) {
                ret = kstrndup(dentry->d_name.name, dentry->d_name.len,