Re: 45aebeaf4f67 "ovl: Ensure upper filesystem supports d_type" breaking Docker

From: Vivek Goyal
Date: Tue May 17 2016 - 08:11:00 EST


On Tue, May 17, 2016 at 10:15:21AM +0200, Miklos Szeredi wrote:
> On Tue, May 17, 2016 at 8:28 AM, Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote:
> > On Mon, May 16, 2016 at 09:07:27AM -0400, Vivek Goyal wrote:
> >> So it became clear that we need a check at mount time to make sure
> >> d_type is supported otherwise error out. This will require users to
> >> do mkfs.xfs with ftype=1 to make progress.
> >>
> >> I think new defaults for mkfs.xfs are such that ftype=1 is set. I am
> >> not sure which version that change was made in.
> >
> > Dumb question - can we end up with empty workdir at that point? Because
> > if we do, the check would appear to return a false negative, no matter
> > what fs supports...
>
> ovl_workdir_create() creates a subdirectory of workdir ("work") so
> workdir itself won't be empty after that. If somebody else messes
> with workdir, then we are screwed anyway.

Right. Initially I was creating a directory of my own and later realized
that ovl_workdir_create() already creates one.

Having said that, what happens when ovl_workdir_create() fails and we
mount overlayfs read only. In that case I think we will conclude that
underlying fs does not support d_type and mounting will fail.

Any thoughts, on how to handle this failure path better?

Daniel,

Yesterday Eric Sandeen told me that I can run "xfs_info <mount-point>" to
figure out if ftype is 0 or 1. You might want to run "xfs_info /" and
ensure ftype=0 in your case and overlay is not detecting it wrong.

Thanks
Vivek