linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH 0/1] ovl: brtfs' temp_fsid doesn't work with ovl index=on
@ 2025-10-14  1:57 André Almeida
  2025-10-14  1:57 ` [RFC PATCH 1/1] ovl: Use fsid as unique identifier for trusted origin André Almeida
                   ` (4 more replies)
  0 siblings, 5 replies; 19+ messages in thread
From: André Almeida @ 2025-10-14  1:57 UTC (permalink / raw)
  To: linux-kernel, linux-btrfs, linux-unionfs, linux-fsdevel
  Cc: kernel-dev, Miklos Szeredi, Amir Goldstein, Chris Mason,
	David Sterba, Anand Jain, Guilherme G . Piccoli,
	André Almeida

Hi everyone,

When using overlayfs with the mount option index=on, the first time a directory is
used as upper dir, overlayfs stores in a xattr "overlay.origin" the UUID of the
filesystem being used in the layers. If the upper dir is reused, overlayfs
refuses to mount for a different filesystem, by comparing the UUID with what's
stored at overlay.origin, and it fails with "failed to verify upper root origin"
on dmesg. Remounting with the very same fs is supported and works fine.

However, btrfs mounts may have volatiles UUIDs. When mounting the exact same
disk image with btrfs, a random UUID is assigned for the following disks each
time they are mounted, stored at temp_fsid and used across the kernel as the
disk UUID. `btrfs filesystem show` presents that. Calling statfs() however shows
the original (and duplicated) UUID for all disks.

This feature doesn't work well with overlayfs with index=on, as when the image
is mounted a second time, will get a different UUID and ovl will refuse to
mount, breaking the user expectation that using the same image should work. A
small script can be find in the end of this cover letter that illustrates this.

From this, I can think of some options:

- Use statfs() internally to always get the fsid, that is persistent. The patch
here illustrates that approach, but doesn't fully implement it.
- Create a new sb op, called get_uuid() so the filesystem returns what's
appropriated.
- Have a workaround in ovl for btrfs.
- Document this as unsupported, and userland needs to erase overlay.origin each
time it wants to remount.
- If ovl detects that temp_fsid and index are being used at the same time,
refuses to mount.

I'm not sure which one would be better here, so I would like to hear some ideas
on this.

Thanks!
	André

---

To reproduce:

mkdir -p dir1 dir2

fallocate -l 300m ./disk1.img
mkfs.btrfs -q -f ./disk1.img

# cloning the disks
cp disk1.img disk2.img
sudo mount -o loop ./disk1.img dir1
sudo mount -o loop ./disk2.img dir2

mkdir -p dir2/lower aux/upper aux/work

# this works
sudo mount -t overlay -o lowerdir=dir2/lower,upperdir=aux/upper,workdir=aux/work,userxattr none dir2/lower

sudo umount dir2/lower
sudo umount dir2

sudo mount -o loop ./disk2.img dir2

# this doesn't works
sudo mount -t overlay -o lowerdir=dir2/lower,upperdir=aux/upper,workdir=aux/work,userxattr none dir2/lower

André Almeida (1):
  ovl: Use fsid as unique identifier for trusted origin

 fs/overlayfs/copy_up.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

-- 
2.51.0


^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2025-10-21  1:17 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-14  1:57 [RFC PATCH 0/1] ovl: brtfs' temp_fsid doesn't work with ovl index=on André Almeida
2025-10-14  1:57 ` [RFC PATCH 1/1] ovl: Use fsid as unique identifier for trusted origin André Almeida
2025-10-14  4:39   ` Christoph Hellwig
2025-10-14  5:13     ` Qu Wenruo
2025-10-14 17:40       ` David Sterba
2025-10-14 17:55         ` André Almeida
2025-10-14 23:46     ` Anand Jain
2025-10-15  1:22       ` Christoph Hellwig
2025-10-20 21:43       ` Dave Chinner
2025-10-21  1:16         ` Anand Jain
2025-10-15 10:52   ` Amir Goldstein
2025-10-14  5:26 ` [RFC PATCH 0/1] ovl: brtfs' temp_fsid doesn't work with ovl index=on Qu Wenruo
2025-10-14 18:24 ` David Sterba
2025-10-14 21:08   ` Qu Wenruo
2025-10-15  0:05     ` Anand Jain
2025-10-15  4:18       ` Qu Wenruo
2025-10-14 22:04 ` Anand Jain
2025-10-15 11:09 ` Amir Goldstein
2025-10-16  4:57   ` Christoph Hellwig

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).