diff options
Diffstat (limited to 'sys/fs')
| -rw-r--r-- | sys/fs/cd9660/cd9660_vfsops.c | 3 | ||||
| -rw-r--r-- | sys/fs/specfs/spec_vnops.c | 6 |
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) && |
