• Mark Fasheh's avatar
    [PATCH] move truncate_inode_pages() into ->delete_inode() · e85b5652
    Mark Fasheh authored
    Allow file systems supporting ->delete_inode() to call
    truncate_inode_pages() on their own.  OCFS2 wants this so it can query the
    cluster before making a final decision on whether to wipe an inode from
    disk or not.  In some corner cases an inode marked on the local node via
    voting may not actually get orphaned.  A good example is node death before
    the transaction moving the inode to the orphan dir commits to the journal.
    Without this patch, the truncate_inode_pages() call in
    generic_delete_inode() would discard valid data for such inodes.
    
    During earlier discussion in the 2.6.13 merge plan thread, Christoph
    Hellwig indicated that other file systems might also find this useful.
    
    IMHO, the best solution would be to just allow ->drop_inode() to do the
    cluster query but it seems that would require a substantial reworking of
    that section of the code.  Assuming it is safe to call write_inode_now() in
    ocfs2_delete_inode() for those inodes which won't actually get wiped, this
    solution should get us by for now.
    
    Trivial testing of this patch (and a related OCFS2 update) has shown this
    to avoid the corruption I'm seeing.
    Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
    Acked-by: default avatarChristoph Hellwig <hch@infradead.org>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    e85b5652
inode.c 35.8 KB