]> bbs.cooldavid.org Git - net-next-2.6.git/commitdiff
convert ocfs2 to ->evict_inode()
authorAl Viro <viro@zeniv.linux.org.uk>
Wed, 9 Jun 2010 01:28:10 +0000 (21:28 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Mon, 9 Aug 2010 20:48:21 +0000 (16:48 -0400)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/ocfs2/inode.c
fs/ocfs2/inode.h
fs/ocfs2/super.c

index abb0a95cc71702931c3f31645d09ebd5be4ed545..eb7fd07c90f224a89731251783b1f9d068ec631a 100644 (file)
@@ -969,7 +969,7 @@ static void ocfs2_cleanup_delete_inode(struct inode *inode,
        truncate_inode_pages(&inode->i_data, 0);
 }
 
-void ocfs2_delete_inode(struct inode *inode)
+static void ocfs2_delete_inode(struct inode *inode)
 {
        int wipe, status;
        sigset_t oldset;
@@ -1075,20 +1075,17 @@ bail_unlock_nfs_sync:
 bail_unblock:
        ocfs2_unblock_signals(&oldset);
 bail:
-       clear_inode(inode);
        mlog_exit_void();
 }
 
-void ocfs2_clear_inode(struct inode *inode)
+static void ocfs2_clear_inode(struct inode *inode)
 {
        int status;
        struct ocfs2_inode_info *oi = OCFS2_I(inode);
 
        mlog_entry_void();
 
-       if (!inode)
-               goto bail;
-
+       end_writeback(inode);
        mlog(0, "Clearing inode: %llu, nlink = %u\n",
             (unsigned long long)OCFS2_I(inode)->ip_blkno, inode->i_nlink);
 
@@ -1180,10 +1177,20 @@ void ocfs2_clear_inode(struct inode *inode)
        jbd2_journal_release_jbd_inode(OCFS2_SB(inode->i_sb)->journal->j_journal,
                                       &oi->ip_jinode);
 
-bail:
        mlog_exit_void();
 }
 
+void ocfs2_evict_inode(struct inode *inode)
+{
+       if (!inode->i_nlink ||
+           (OCFS2_I(inode)->ip_flags & OCFS2_INODE_MAYBE_ORPHANED)) {
+               ocfs2_delete_inode(inode);
+       } else {
+               truncate_inode_pages(&inode->i_data, 0);
+       }
+       ocfs2_clear_inode(inode);
+}
+
 /* Called under inode_lock, with no more references on the
  * struct inode, so it's safe here to check the flags field
  * and to manipulate i_nlink without any other locks. */
index 9f5f5fcadc45b96dd345f76d93c9b4894eb16f0a..975eedd7b2432cd928915c2202e9dc69d1dcab67 100644 (file)
@@ -123,8 +123,7 @@ static inline struct ocfs2_caching_info *INODE_CACHE(struct inode *inode)
        return &OCFS2_I(inode)->ip_metadata_cache;
 }
 
-void ocfs2_clear_inode(struct inode *inode);
-void ocfs2_delete_inode(struct inode *inode);
+void ocfs2_evict_inode(struct inode *inode);
 void ocfs2_drop_inode(struct inode *inode);
 
 /* Flags for ocfs2_iget() */
index 0eaa929a4dbf2cec50d059affc8c664bf9a1f1d2..ae1a4437a9803540324c9fc0cdef15d6aa0f086b 100644 (file)
@@ -145,8 +145,7 @@ static const struct super_operations ocfs2_sops = {
        .alloc_inode    = ocfs2_alloc_inode,
        .destroy_inode  = ocfs2_destroy_inode,
        .drop_inode     = ocfs2_drop_inode,
-       .clear_inode    = ocfs2_clear_inode,
-       .delete_inode   = ocfs2_delete_inode,
+       .evict_inode    = ocfs2_evict_inode,
        .sync_fs        = ocfs2_sync_fs,
        .put_super      = ocfs2_put_super,
        .remount_fs     = ocfs2_remount,