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. -- Jeff Layton <jlayton@xxxxxxxxxx>