summaryrefslogtreecommitdiffstats
path: root/fs/overlayfs/util.c
diff options
context:
space:
mode:
authorAmir Goldstein2017-05-16 23:12:41 +0200
committerMiklos Szeredi2017-05-19 09:33:49 +0200
commit21a228781104ae6fed7e720137ab024575071feb (patch)
treee75c1046173e195f9dfacfa28c88e12ae42b2bbc /fs/overlayfs/util.c
parentovl: don't fail copy-up if upper doesn't support xattr (diff)
downloadkernel-qcow2-linux-21a228781104ae6fed7e720137ab024575071feb.tar.gz
kernel-qcow2-linux-21a228781104ae6fed7e720137ab024575071feb.tar.xz
kernel-qcow2-linux-21a228781104ae6fed7e720137ab024575071feb.zip
ovl: handle rename when upper doesn't support xattr
On failure to set opaque/redirect xattr on rename, skip setting xattr and return -EXDEV. On failure to set opaque xattr when creating a new directory, -EIO is returned instead of -EOPNOTSUPP. Any failure to set those xattr will be recorded in super block and then setting any xattr on upper won't be attempted again. Signed-off-by: Amir Goldstein <amir73il@gmail.com> Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Diffstat (limited to 'fs/overlayfs/util.c')
-rw-r--r--fs/overlayfs/util.c9
1 files changed, 1 insertions, 8 deletions
diff --git a/fs/overlayfs/util.c b/fs/overlayfs/util.c
index b5a0dc36ee96..4d541a8d0834 100644
--- a/fs/overlayfs/util.c
+++ b/fs/overlayfs/util.c
@@ -191,14 +191,7 @@ bool ovl_redirect_dir(struct super_block *sb)
{
struct ovl_fs *ofs = sb->s_fs_info;
- return ofs->config.redirect_dir;
-}
-
-void ovl_clear_redirect_dir(struct super_block *sb)
-{
- struct ovl_fs *ofs = sb->s_fs_info;
-
- ofs->config.redirect_dir = false;
+ return ofs->config.redirect_dir && !ofs->noxattr;
}
const char *ovl_dentry_get_redirect(struct dentry *dentry)