* Jeff Layton: > On Mon, 2024-07-29 at 08:55 +0200, Florian Weimer wrote: >> It was pointed out to me that inode numbers on Linux are no longer >> expected to be unique per file system, even for local file systems. >> Applications sometimes need to check if two (open) files are the >> same. >> For example, a program may want to use a temporary file if is invoked >> with input and output files referring to the same file. >> >> How can we check for this? The POSIX way is to compare st_ino and >> st_dev in stat output, but if inode numbers are not unique, that will >> result in files falsely being reported as identical. It's harmless >> in >> the temporary file case, but it in other scenarios, it may result in >> data loss. >> > > I believe this is the problem that STATX_SUBVOL was intended to solve. > > Both bcachefs and btrfs will provide this attribute if requested. So, > basically to uniquely ID an inode using statx, you need a tuple of: > > stx_dev_major/minor > stx_subvol > stx_ino > > If the filesystem doesn't provide STATX_SUBVOL, then one can (likely) > conclude that stx_dev_* and stx_ino are enough. Does this really work for the virtiofs case, though? It has to pass through all three *and* make things unique relative to the host, I think. Thanks, Florian