"Here's a set of patches that remove all calls to iget() and all read_inode() functions," began David Howells describing a collection of 32 patches posted to the lkml. He went on to explain the reason for removing these functions, "they should be removed for two reasons: firstly they don't lend themselves to good error handling, and secondly their presence is a temptation for code outside a filesystem to call iget() to access inodes within that filesystem." He then suggested three benefits:
"(1) Error handling gets simpler as you can return an error code rather than having to call is_bad_inode(). (2) You can now tell the difference between ENOMEM and EIO occurring in the read_inode() path. (3) The code should get smaller. iget() is an inline function that is typically called 2-3 times per filesystem that uses it. By folding the iget code into the read_inode code for each filesystem, it eliminates some duplication."