diff options
Diffstat (limited to 'fs/overlayfs/super.c')
-rw-r--r-- | fs/overlayfs/super.c | 18 |
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; |