As a user, you shouldn’t have to worry too much about the underlying implementation when interacting with files and directories in user space. It is common practice for processes to make use of system calls to the kernel in order to read or write to a mounted filesystem. However, you do have access to data from the filesystem that doesn’t seem to belong in the user’s domain. The
stat() system call in particular returns inode numbers and link counts.
Do you have to worry about inode numbers, link counts, and other implementation details even when you’re not maintaining a filesystem? No (in most cases). This information is made available to user-mode programs for the primary purpose of maintaining backward compatibility. In addition, these filesystem internals aren’t present in every Linux filesystem because they’re not standardized. The VFS interface layer is responsible for ensuring that system calls always return inode numbers...