Re: How to cope with two incompatible overlayfs formats out in the wild

From: Andy Whitcroft
Date: Tue Nov 18 2014 - 12:07:00 EST


On Tue, Nov 18, 2014 at 03:28:03PM +0100, Miklos Szeredi wrote:
> [CC-ing mailing lists, Al and Linus for wider exposure]
>
> This issue is this: Ubuntu and SUSE carry an "old" format of overlayfs
> while mainline has a "new" format. The differences are:
>
> - whiteouts are represented differently (symlink + xattr in the old
> format, chardev in the new)
>
> - new one needs a "workdir" mount option, which points to a directory
> on the same filesystem as upperdir. If upperdir was the root of the
> filesystem then it needs to be moved into a subdir to make space for
> the work directory.
>
> Migrating from old to new is not a big issue, but Ubuntu people have
> expressed concerns about systems with mixed kernel versions and want
> to support the old format alongside the new.
>
> This can all be done with out-of-tree code.
>
> So from mainline we need two things:
>
> - when mounting distinguish between old and new format.
>
> - userspace can detect which formats are supported by the kernel.
>
> If we'd have a different filesystem type for the old and new formats,
> then that would solve both (checking /proc/filesystems would indicate
> which one is supported).
>
> Unfortunately that would mean having to change "overlayfs" type to
> something else in 3.18. Question is, is there some sane name which
> would fit? "overlayfs2" is perhaps the best, but I'm not overly
> enthusiastic about it.
>
> Any other ideas?

ext4 makes use of feature flags in /sys/fs/ext4/features. Perhaps we could
make use of this, say /sys/fs/overlayfs/features/{workdir,whiteout-chrdev},
or a even some kind of version in /sys/fs/overlayfs/version.

The presence of /sys/fs/overlayfs itself might be enought to assume the
presence of support for the new format.

-apw
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/