]> git.ipfire.org Git - people/ms/linux.git/blobdiff - fs/overlayfs/super.c
Merge branch 'for-6.0/dax' into libnvdimm-fixes
[people/ms/linux.git] / fs / overlayfs / super.c
index e0a2e0468ee7f1e4bb668df4a9d13cea9d34082b..ec746d447f1bb147d637ffca6236eac13b348599 100644 (file)
@@ -301,7 +301,7 @@ static int ovl_sync_fs(struct super_block *sb, int wait)
 
 /**
  * ovl_statfs
- * @sb: The overlayfs super block
+ * @dentry: The dentry to query
  * @buf: The struct kstatfs to fill in with stats
  *
  * Get the filesystem statistics.  As writes always target the upper layer
@@ -349,6 +349,8 @@ static inline int ovl_xino_def(void)
 
 /**
  * ovl_show_options
+ * @m: the seq_file handle
+ * @dentry: The dentry to query
  *
  * Prints the mount options for a given superblock.
  * Returns zero; does not fail.
@@ -1412,11 +1414,12 @@ static int ovl_make_workdir(struct super_block *sb, struct ovl_fs *ofs,
         */
        err = ovl_setxattr(ofs, ofs->workdir, OVL_XATTR_OPAQUE, "0", 1);
        if (err) {
+               pr_warn("failed to set xattr on upper\n");
                ofs->noxattr = true;
                if (ofs->config.index || ofs->config.metacopy) {
                        ofs->config.index = false;
                        ofs->config.metacopy = false;
-                       pr_warn("upper fs does not support xattr, falling back to index=off,metacopy=off.\n");
+                       pr_warn("...falling back to index=off,metacopy=off.\n");
                }
                /*
                 * xattr support is required for persistent st_ino.
@@ -1424,8 +1427,10 @@ static int ovl_make_workdir(struct super_block *sb, struct ovl_fs *ofs,
                 */
                if (ofs->config.xino == OVL_XINO_AUTO) {
                        ofs->config.xino = OVL_XINO_OFF;
-                       pr_warn("upper fs does not support xattr, falling back to xino=off.\n");
+                       pr_warn("...falling back to xino=off.\n");
                }
+               if (err == -EPERM && !ofs->config.userxattr)
+                       pr_info("try mounting with 'userxattr' option\n");
                err = 0;
        } else {
                ovl_removexattr(ofs, ofs->workdir, OVL_XATTR_OPAQUE);
@@ -2032,7 +2037,7 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent)
        sb->s_stack_depth = 0;
        sb->s_maxbytes = MAX_LFS_FILESIZE;
        atomic_long_set(&ofs->last_ino, 1);
-       /* Assume underlaying fs uses 32bit inodes unless proven otherwise */
+       /* Assume underlying fs uses 32bit inodes unless proven otherwise */
        if (ofs->config.xino != OVL_XINO_OFF) {
                ofs->xino_mode = BITS_PER_LONG - 32;
                if (!ofs->xino_mode) {