• David Howells's avatar
    iget: stop HPPFS from using iget() and read_inode() · 755aedc1
    David Howells authored
    Stop the HPPFS filesystem from using iget() and read_inode().  Provide an
    hppfs_iget(), and call that instead of iget().  hppfs_iget() then uses
    iget_locked() directly and returns a proper error code instead of an inode in
    the event of an error.
    
    hppfs_fill_sb_common() returns any error incurred when getting the root inode
    instead of EINVAL.
    
    Note that the contents of hppfs_kern.c need to be examined:
    
     (*) The HPPFS inode retains a pointer to the proc dentry it is shadowing, but
         whilst it does appear to retain a reference to it, it doesn't appear to
         destroy the reference if the inode goes away.
    
     (*) hppfs_iget() should perhaps subsume init_inode() and hppfs_read_inode().
    
     (*) It would appear that all hppfs inodes are the same inode because iget()
         was being called with inode number 0, which forms the lookup key.
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    Acked-by: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    755aedc1
hppfs_kern.c 17.2 KB