summaryrefslogtreecommitdiffstats
path: root/fs/xfs
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@sgi.com>2005-09-05 08:28:02 +1000
committerNathan Scott <nathans@sgi.com>2005-09-05 08:28:02 +1000
commit02ba71de98d5eee63e82cc2d88f9ea8430810a9a (patch)
treeb85447888ac27b35136d92f4dc25cc55de3b1b97 /fs/xfs
parent53937c52c3f1dff6100174f50a85c068f16713ae (diff)
downloadlinux-02ba71de98d5eee63e82cc2d88f9ea8430810a9a.tar.bz2
[XFS] allow a null behaviour pointer in linvfs_clear_inode
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>
Diffstat (limited to 'fs/xfs')
-rw-r--r--fs/xfs/linux-2.6/xfs_super.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c
index cd3f8b3270ac..910e43bfc95b 100644
--- a/fs/xfs/linux-2.6/xfs_super.c
+++ b/fs/xfs/linux-2.6/xfs_super.c
@@ -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;