Currently, a linear scan of the inode blocks is required to fetch the next free inode. Possibly add another field at the end of an inode ssize_t i_next_free_inum and use it to form a linked list of sorts like the freelist. Addition and removal to be done from the head. This ensures O(1) fetch.