On Fri, Jan 19, 2024 at 6:35 PM Alexander Larsson alexl@redhat.com wrote:
On Fri, 2024-01-19 at 13:08 +0200, Amir Goldstein wrote:
On Fri, Jan 19, 2024 at 12:14 PM Miklos Szeredi mszeredi@redhat.com wrote:
Do you want me to fix/test and send this to Linus?
Alex, can we add your RVB to v2?
I ran into an issue converting composefs to use this.
Suppose we have a chroot of files containing some upper dirs and we want to make a composefs of this. For example, say /foo/lower/dir/whiteout is a traditional whiteout.
Previously, what happened is that I marked the whiteout file with trusted.overlay.overlay.whiteout, and the /foo/lower/dir with trusted.overlay.overlay.whiteouts.
Them when I mounted then entire chroot with overlayfs these xattrs would get unescaped and I would get a $mnt/foo/lower/dir/whiteout with a trusted.overlay.whiteout xattr, and a $mnt/foo/lower/dir with a trusted.overlay.whiteout. When I then mounted another overlayfs with a lowerdir of $mnt/foo/lower it would treat the whiteout as a xwhiteout.
However, now I need the lowerdir toplevel dir to also have a trusted.overlay.whiteouts xattr. But when I'm converting the entire chroot I do not know which of the directories is going to be used as the toplevel lower dir, so I don't know where to put this marker.
The only solution I see is to put it on *all* parent directories. Is there a better approach here?
How about checking xwhiteouts xattrs along with impure and origin xattrs in ovl_get_inode()?
Then there will be no overhead in readdir and no need for marking the layer root?
Miklos, would that be acceptable?
Thanks, Amir.