ovl: warn instead of error if d_type is not supported

overlay needs underlying fs to support d_type. Recently I put in a
patch in to detect this condition and started failing mount if
underlying fs did not support d_type.

But this breaks existing configurations over kernel upgrade. Those who
are running docker (partially broken configuration) with xfs not
supporting d_type, are surprised that after kernel upgrade docker does
not run anymore.

https://github.com/docker/docker/issues/22937#issuecomment-229881315

So instead of erroring out, detect broken configuration and warn
about it. This should allow existing docker setups to continue
working after kernel upgrade.

Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Fixes: 45aebeaf4f67 ("ovl: Ensure upper filesystem supports d_type")
Cc: <stable@vger.kernel.org> 4.6

authored by Vivek Goyal and committed by Miklos Szeredi e7c0b599 03bea604

Changed files
+7 -5
fs
overlayfs
+7 -5
fs/overlayfs/super.c
··· 1082 1082 if (err < 0) 1083 1083 goto out_put_workdir; 1084 1084 1085 - if (!err) { 1086 - pr_err("overlayfs: upper fs needs to support d_type.\n"); 1087 - err = -EINVAL; 1088 - goto out_put_workdir; 1089 - } 1085 + /* 1086 + * We allowed this configuration and don't want to 1087 + * break users over kernel upgrade. So warn instead 1088 + * of erroring out. 1089 + */ 1090 + if (!err) 1091 + pr_warn("overlayfs: upper fs needs to support d_type.\n"); 1090 1092 } 1091 1093 } 1092 1094