-
Jakob Unterwurzacher authored
...if it has already been set by the filesystem. "out.Ino" is the user-facing inode number that is displayed by "ls -li". This change allows loopback filesystems to expose the inode number of the underlying filesystem. As a "real" inode number, this one is stable for the lifetime of the file, even across remounts. libfuse has the `use_ino` option that allows the inode numbers to be set arbitrarily as well. This has been used by EncFS for years. The Linux kernel stores the inode number in `orig_ino`. Grepping in `fs/fuse` shows that it is only read once in `fuse_update_attributes`, and only if the `stat` argument is not NULL. There is only one caller that passes that argument: `fuse_getattr`. In short, the kernel does not use the inode number for anything but reporting it via `stat()`, hence setting the inode number is safe. This functionality will be used for improving log output in gocryptfs, where file names cannot be used because they are encrypted.
1b3f7953