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

From: Miklos Szeredi
Date: Wed Nov 19 2014 - 09:32:47 EST


On Tue, Nov 18, 2014 at 03:28:03PM +0100, Miklos Szeredi wrote:
> 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.

How 'bout just "overlay"?

Minimal patch follows.

I'd be happy to rename "fs/overlayfs" to "fs/overlay" and
"Documentation/filesystems/overlayfs.txt" to
"Documentation/filesystems/overlay.txt" as well, but that should be a separate
patch that just does renames and nothing else.

Thanks,
Miklos
----

Subject: ovl: rename filesystem type to "overlay"
From: Miklos Szeredi <mszeredi@xxxxxxx>

Some distributions carry an "old" format of overlayfs while mainline has a
"new" format.

The distros will possibly want to keep the old overlayfs alongside the new
for compatibility reasons.

To make it possible to differentiate the two versions change the name of
the new one from "overlayfs" to "overlay".

Signed-off-by: Miklos Szeredi <mszeredi@xxxxxxx>
Reported-by: Serge Hallyn <serge.hallyn@xxxxxxxxxx>
Cc: Andy Whitcroft <apw@xxxxxxxxxxxxx>
---
Documentation/filesystems/overlayfs.txt | 2 +-
MAINTAINERS | 2 +-
fs/Makefile | 2 +-
fs/overlayfs/Kconfig | 2 +-
fs/overlayfs/Makefile | 4 ++--
fs/overlayfs/super.c | 6 +++---
6 files changed, 9 insertions(+), 9 deletions(-)

--- a/fs/overlayfs/super.c
+++ b/fs/overlayfs/super.c
@@ -24,7 +24,7 @@ MODULE_AUTHOR("Miklos Szeredi <miklos@sz
MODULE_DESCRIPTION("Overlay filesystem");
MODULE_LICENSE("GPL");

-#define OVERLAYFS_SUPER_MAGIC 0x794c764f
+#define OVERLAYFS_SUPER_MAGIC 0x794c7630

struct ovl_config {
char *lowerdir;
@@ -776,11 +776,11 @@ static struct dentry *ovl_mount(struct f

static struct file_system_type ovl_fs_type = {
.owner = THIS_MODULE,
- .name = "overlayfs",
+ .name = "overlay",
.mount = ovl_mount,
.kill_sb = kill_anon_super,
};
-MODULE_ALIAS_FS("overlayfs");
+MODULE_ALIAS_FS("overlay");

static int __init ovl_init(void)
{
--- a/Documentation/filesystems/overlayfs.txt
+++ b/Documentation/filesystems/overlayfs.txt
@@ -64,7 +64,7 @@ is formed.
At mount time, the two directories given as mount options "lowerdir" and
"upperdir" are combined into a merged directory:

- mount -t overlayfs overlayfs -olowerdir=/lower,upperdir=/upper,\
+ mount -t overlay overlay -olowerdir=/lower,upperdir=/upper,\
workdir=/work /merged

The "workdir" needs to be an empty directory on the same filesystem
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -6888,7 +6888,7 @@ F: drivers/scsi/osd/
F: include/scsi/osd_*
F: fs/exofs/

-OVERLAYFS FILESYSTEM
+OVERLAY FILESYSTEM
M: Miklos Szeredi <miklos@xxxxxxxxxx>
L: linux-fsdevel@xxxxxxxxxxxxxxx
S: Supported
--- a/fs/Makefile
+++ b/fs/Makefile
@@ -104,7 +104,7 @@ obj-$(CONFIG_QNX6FS_FS) += qnx6/
obj-$(CONFIG_AUTOFS4_FS) += autofs4/
obj-$(CONFIG_ADFS_FS) += adfs/
obj-$(CONFIG_FUSE_FS) += fuse/
-obj-$(CONFIG_OVERLAYFS_FS) += overlayfs/
+obj-$(CONFIG_OVERLAY_FS) += overlayfs/
obj-$(CONFIG_UDF_FS) += udf/
obj-$(CONFIG_SUN_OPENPROMFS) += openpromfs/
obj-$(CONFIG_OMFS_FS) += omfs/
--- a/fs/overlayfs/Kconfig
+++ b/fs/overlayfs/Kconfig
@@ -1,4 +1,4 @@
-config OVERLAYFS_FS
+config OVERLAY_FS
tristate "Overlay filesystem support"
help
An overlay filesystem combines two filesystems - an 'upper' filesystem
--- a/fs/overlayfs/Makefile
+++ b/fs/overlayfs/Makefile
@@ -2,6 +2,6 @@
# Makefile for the overlay filesystem.
#

-obj-$(CONFIG_OVERLAYFS_FS) += overlayfs.o
+obj-$(CONFIG_OVERLAY_FS) += overlay.o

-overlayfs-objs := super.o inode.o dir.o readdir.o copy_up.o
+overlay-objs := super.o inode.o dir.o readdir.o copy_up.o
--
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/