I was thinking of a more generalized overlayfs solution that detects if file systems don't initialize the superblock uuid and overlayfs improvises by generating the internal overlayfs uuid, something like:
diff --git a/fs/overlayfs/copy_up.c b/fs/overlayfs/copy_up.c index 698d112bdb17..da3faaf68d69 100644 --- a/fs/overlayfs/copy_up.c +++ b/fs/overlayfs/copy_up.c @@ -248,6 +248,7 @@ struct ovl_fh *ovl_encode_real_fh(struct dentry *real, bool is_upper) void *buf; int buflen = MAX_HANDLE_SZ; uuid_t *uuid = &real->d_sb->s_uuid; + static const uuid_t z_uuid; buf = kmalloc(buflen, GFP_KERNEL); if (!buf) @@ -289,7 +290,22 @@ struct ovl_fh *ovl_encode_real_fh(struct dentry *real, bool is_upper) if (is_upper) fh->flags |= OVL_FH_FLAG_PATH_UPPER; fh->len = fh_len; - fh->uuid = *uuid; + + if (uuid_equal(uuid, &z_uuid)) { + struct super_block *sb = real->d_sb; + u16 hash; + + pr_warn("ovl_encode_real_fh: ZERO UUID, generating one from superblock\n"); + + memcpy(&fh->uuid.b[0], &sb->s_magic, 8); + memcpy(&fh->uuid.b[8], &sb->s_dev, 6); + hash = ((long)sb ^ (long)sb->s_fs_info) >> 12; + memcpy(&fh->uuid.b[14], &hash, 2); + } else { + fh->uuid = *uuid; + } + -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1824407 Title: remount of multilower moved pivoted-root overlayfs root, results in I/O errors on some modified files To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1824407/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs