summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbatschul <none@none>2007-10-12 07:22:21 -0700
committerbatschul <none@none>2007-10-12 07:22:21 -0700
commit52d549430a19e69ddf8ff7ed6d045200cb07d7f6 (patch)
tree655a55d606c2b29060b980da6a89202d7e58220e
parent442d23f49355a5d0694c758975be57af39f91a61 (diff)
downloadillumos-joyent-52d549430a19e69ddf8ff7ed6d045200cb07d7f6.tar.gz
6459880 snv_46;panic: v_pages list not all clean; running tsufs testsuite on x64 systems
-rw-r--r--usr/src/uts/common/fs/ufs/ufs_acl.c1
-rw-r--r--usr/src/uts/common/fs/ufs/ufs_inode.c10
2 files changed, 9 insertions, 2 deletions
diff --git a/usr/src/uts/common/fs/ufs/ufs_acl.c b/usr/src/uts/common/fs/ufs/ufs_acl.c
index cbcc38129a..ce1d2f1677 100644
--- a/usr/src/uts/common/fs/ufs/ufs_acl.c
+++ b/usr/src/uts/common/fs/ufs/ufs_acl.c
@@ -231,6 +231,7 @@ loop:
sip->i_seq++;
sip->i_mode = (o_mode_t)IFSHAD;
ITOV(sip)->v_type = VREG;
+ ufs_reset_vnode(ITOV(sip));
sip->i_nlink = 1;
sip->i_uid = crgetuid(cr);
sip->i_suid = (ulong_t)sip->i_uid > (ulong_t)USHRT_MAX ?
diff --git a/usr/src/uts/common/fs/ufs/ufs_inode.c b/usr/src/uts/common/fs/ufs/ufs_inode.c
index 76db353cca..09f0d70648 100644
--- a/usr/src/uts/common/fs/ufs/ufs_inode.c
+++ b/usr/src/uts/common/fs/ufs/ufs_inode.c
@@ -622,9 +622,15 @@ again:
}
/*
- * finish initializing the vnode
+ * Finish initializing the vnode, special handling for shadow inodes
+ * because IFTOVT() will produce a v_type of VNON which is not what we
+ * want, set v_type to VREG explicitly in that case.
*/
- vp->v_type = IFTOVT((mode_t)ip->i_mode);
+ if (ftype == IFSHAD) {
+ vp->v_type = VREG;
+ } else {
+ vp->v_type = IFTOVT((mode_t)ip->i_mode);
+ }
ufs_reset_vnode(vp);