kernel - fix panic on reboot when swap populated
authorMatthew Dillon <dillon@apollo.backplane.com>
Fri, 5 Feb 2010 00:16:58 +0000 (16:16 -0800)
committerMatthew Dillon <dillon@apollo.backplane.com>
Fri, 5 Feb 2010 00:18:25 +0000 (16:18 -0800)
* The swapvp does not have a v_mount so do not try to access
  the mount lock through it if v_mount is NULL.

sys/kern/vfs_vopops.c

index de8130d..918d8f3 100644 (file)
@@ -818,9 +818,16 @@ vop_strategy(struct vop_ops *ops, struct vnode *vp, struct bio *bio)
        ap.a_vp = vp;
        ap.a_bio = bio;
 
-       VFS_MPLOCK1(vp->v_mount);
-       DO_OPS(ops, error, &ap, vop_strategy);
-       VFS_MPUNLOCK(vp->v_mount);
+       if (vp->v_mount) {
+               VFS_MPLOCK1(vp->v_mount);
+               DO_OPS(ops, error, &ap, vop_strategy);
+               VFS_MPUNLOCK(vp->v_mount);
+       } else {
+               /* ugly hack for swap */
+               get_mplock();
+               DO_OPS(ops, error, &ap, vop_strategy);
+               rel_mplock();
+       }
        return(error);
 }