summaryrefslogtreecommitdiff
path: root/sys/fs
diff options
context:
space:
mode:
Diffstat (limited to 'sys/fs')
-rw-r--r--sys/fs/cd9660/cd9660_vfsops.c3
-rw-r--r--sys/fs/specfs/spec_vnops.c6
2 files changed, 6 insertions, 3 deletions
diff --git a/sys/fs/cd9660/cd9660_vfsops.c b/sys/fs/cd9660/cd9660_vfsops.c
index 2b21ba9bfb94..50f3883e108f 100644
--- a/sys/fs/cd9660/cd9660_vfsops.c
+++ b/sys/fs/cd9660/cd9660_vfsops.c
@@ -855,7 +855,8 @@ cd9660_vget_internal(mp, ino, vpp, relocated, isodir)
case VCHR:
case VBLK:
vp->v_op = cd9660_specop_p;
- addaliasu(vp, ip->inode.iso_rdev);
+ vp = addaliasu(vp, ip->inode.iso_rdev);
+ ip->i_vnode = vp;
break;
default:
break;
diff --git a/sys/fs/specfs/spec_vnops.c b/sys/fs/specfs/spec_vnops.c
index baf40c3255d8..2b1df9efe20a 100644
--- a/sys/fs/specfs/spec_vnops.c
+++ b/sys/fs/specfs/spec_vnops.c
@@ -421,9 +421,11 @@ spec_strategy(ap)
bp = ap->a_bp;
vp = ap->a_vp;
if ((bp->b_iocmd == BIO_WRITE)) {
- if (vp->v_mount != NULL &&
- (vp->v_mount->mnt_kern_flag & MNTK_SUSPENDED) != 0)
+ if ((bp->b_flags & B_VALIDSUSPWRT) == 0 &&
+ bp->b_vp != NULL && bp->b_vp->v_mount != NULL &&
+ (bp->b_vp->v_mount->mnt_kern_flag & MNTK_SUSPENDED) != 0)
panic("spec_strategy: bad I/O");
+ bp->b_flags &= ~B_VALIDSUSPWRT;
if (LIST_FIRST(&bp->b_dep) != NULL)
buf_start(bp);
if ((vp->v_flag & VCOPYONWRITE) &&