On Fri, Nov 03, 2023 at 04:47:02PM +0100, Christian Brauner wrote: > I think the idea of using vfsmounts for this makes some sense if the > goal is to retroactively justify and accommodate the idea that a > subvolume is to be treated as equivalent to a separate device. st_dev has only been very historically about treating something as a device. For userspae the most important part is that it designates a separate domain for inode numbers. And that's something that's simply broken in btrfs. > I question that premise though. I think marking them with separate > device numbers is bringing us nothing but pain at this point and this > solution is basically bending the vfs to make that work somehow. Well, the only other theoretical option would be to use a simple inode number space across subvolumes in btrfs, but I don't really see how that could be retrofitted in any sensible way. > I would feel much more comfortable if the two filesystems that expose > these objects give us something like STATX_SUBVOLUME that userspace can > raise in the request mask of statx(). Except that this doesn't fix any existing code. > If userspace requests STATX_SUBVOLUME in the request mask, the two > filesystems raise STATX_SUBVOLUME in the statx result mask and then also > return the _real_ device number of the superblock and stop exposing that > made up device number. What is a "real" device number?