aboutsummaryrefslogtreecommitdiffstats
path: root/fs/overlayfs/super.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/overlayfs/super.c')
-rw-r--r--fs/overlayfs/super.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c
index 619ad4b016d2..ef64984c9bbc 100644
--- a/fs/overlayfs/super.c
+++ b/fs/overlayfs/super.c
@@ -936,7 +936,8 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent)
936 936
937 err = -EINVAL; 937 err = -EINVAL;
938 if (!ufs->config.lowerdir) { 938 if (!ufs->config.lowerdir) {
939 pr_err("overlayfs: missing 'lowerdir'\n"); 939 if (!silent)
940 pr_err("overlayfs: missing 'lowerdir'\n");
940 goto out_free_config; 941 goto out_free_config;
941 } 942 }
942 943
@@ -1028,6 +1029,21 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent)
1028 sb->s_flags |= MS_RDONLY; 1029 sb->s_flags |= MS_RDONLY;
1029 ufs->workdir = NULL; 1030 ufs->workdir = NULL;
1030 } 1031 }
1032
1033 /*
1034 * Upper should support d_type, else whiteouts are visible.
1035 * Given workdir and upper are on same fs, we can do
1036 * iterate_dir() on workdir.
1037 */
1038 err = ovl_check_d_type_supported(&workpath);
1039 if (err < 0)
1040 goto out_put_workdir;
1041
1042 if (!err) {
1043 pr_err("overlayfs: upper fs needs to support d_type.\n");
1044 err = -EINVAL;
1045 goto out_put_workdir;
1046 }
1031 } 1047 }
1032 1048
1033 err = -ENOMEM; 1049 err = -ENOMEM;