On Wed, Jan 03, 2024 at 01:54:34PM +0100, Andreas Hindborg (Samsung) wrote: > > Wedson Almeida Filho <wedsonaf@xxxxxxxxx> writes: > > > +/// The number of an inode. > > +pub type Ino = u64; > > Would it be possible to use a descriptive name such as `INodeNumber`? Filesystem programmers are lazy. Originally the term was "index node number", which was shortened to "inode number", shortened again to "inumber", and finally "ino". The Rust type name might as well mirror the C type. (There are probably greyerbeards than I who can quote even more arcane points of Unix filesystem history.) > > + /// Returns the super-block that owns the inode. > > + pub fn super_block(&self) -> &SuperBlock<T> { > > + // SAFETY: `i_sb` is immutable, and `self` is guaranteed to be valid by the existence of a > > + // shared reference (&self) to it. > > + unsafe { &*(*self.0.get()).i_sb.cast() } > > + } > > I think the safety comment should talk about the pointee rather than the > pointer? "The pointee of `i_sb` is immutable, and ..." inode::i_sb (the pointer) shouldn't be reassigned to a different superblock during the lifetime of the inode; but the superblock object itself (the pointee) is very much mutable. --D > BR Andreas > >