[XFS] allow a null behaviour pointer in linvfs_clear_inode
authorChristoph Hellwig <hch@sgi.com>
Sun, 4 Sep 2005 22:28:02 +0000 (08:28 +1000)
committerNathan Scott <nathans@sgi.com>
Sun, 4 Sep 2005 22:28:02 +0000 (08:28 +1000)
SGI-PV: 940531
SGI-Modid: xfs-linux:xfs-kern:197782a

Signed-off-by: Christoph Hellwig <hch@sgi.com>
Signed-off-by: Nathan Scott <nathans@sgi.com>
fs/xfs/linux-2.6/xfs_super.c

index cd3f8b3270ac8ce0228d993e76512445d25fda95..910e43bfc95ba1b95a952efea5486abc22764806 100644 (file)
@@ -387,14 +387,17 @@ linvfs_clear_inode(
 
        vn_trace_entry(vp, "clear_inode", (inst_t *)__return_address);
 
-       ASSERT(vp->v_fbhv != NULL);
-
        XFS_STATS_INC(vn_rele);
        XFS_STATS_INC(vn_remove);
        XFS_STATS_INC(vn_reclaim);
        XFS_STATS_DEC(vn_active);
 
-       VOP_INACTIVE(vp, NULL, cache);
+       /*
+        * This can happen because xfs_iget_core calls xfs_idestroy if we
+        * find an inode with di_mode == 0 but without IGET_CREATE set.
+        */
+       if (vp->v_fbhv)
+               VOP_INACTIVE(vp, NULL, cache);
 
        VN_LOCK(vp);
        vp->v_flag &= ~VMODIFIED;