have to protect count increment with splbio to protect against biodone
authorKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Mon, 26 Feb 1990 04:54:12 +0000 (20:54 -0800)
committerKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Mon, 26 Feb 1990 04:54:12 +0000 (20:54 -0800)
SCCS-vsn: sys/kern/vfs_bio.c 7.22
SCCS-vsn: sys/kern/vfs_cluster.c 7.22

usr/src/sys/kern/vfs_bio.c
usr/src/sys/kern/vfs_cluster.c

index 822b05e..2e611ed 100644 (file)
@@ -14,7 +14,7 @@
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- *     @(#)vfs_bio.c   7.21 (Berkeley) %G%
+ *     @(#)vfs_bio.c   7.22 (Berkeley) %G%
  */
 
 #include "param.h"
  */
 
 #include "param.h"
@@ -153,7 +153,7 @@ bwrite(bp)
        register struct buf *bp;
 {
        register int flag;
        register struct buf *bp;
 {
        register int flag;
-       int error;
+       int s, error;
 
        flag = bp->b_flags;
        bp->b_flags &= ~(B_READ | B_DONE | B_ERROR | B_DELWRI);
 
        flag = bp->b_flags;
        bp->b_flags &= ~(B_READ | B_DONE | B_ERROR | B_DELWRI);
@@ -165,7 +165,9 @@ bwrite(bp)
            pack(bp->b_vp->v_mount->m_fsid[0], bp->b_bcount), bp->b_lblkno);
        if (bp->b_bcount > bp->b_bufsize)
                panic("bwrite");
            pack(bp->b_vp->v_mount->m_fsid[0], bp->b_bcount), bp->b_lblkno);
        if (bp->b_bcount > bp->b_bufsize)
                panic("bwrite");
+       s = splbio();
        bp->b_vp->v_numoutput++;
        bp->b_vp->v_numoutput++;
+       splx(s);
        VOP_STRATEGY(bp);
 
        /*
        VOP_STRATEGY(bp);
 
        /*
index b6ac975..aa37a2f 100644 (file)
@@ -14,7 +14,7 @@
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- *     @(#)vfs_cluster.c       7.21 (Berkeley) %G%
+ *     @(#)vfs_cluster.c       7.22 (Berkeley) %G%
  */
 
 #include "param.h"
  */
 
 #include "param.h"
@@ -153,7 +153,7 @@ bwrite(bp)
        register struct buf *bp;
 {
        register int flag;
        register struct buf *bp;
 {
        register int flag;
-       int error;
+       int s, error;
 
        flag = bp->b_flags;
        bp->b_flags &= ~(B_READ | B_DONE | B_ERROR | B_DELWRI);
 
        flag = bp->b_flags;
        bp->b_flags &= ~(B_READ | B_DONE | B_ERROR | B_DELWRI);
@@ -165,7 +165,9 @@ bwrite(bp)
            pack(bp->b_vp->v_mount->m_fsid[0], bp->b_bcount), bp->b_lblkno);
        if (bp->b_bcount > bp->b_bufsize)
                panic("bwrite");
            pack(bp->b_vp->v_mount->m_fsid[0], bp->b_bcount), bp->b_lblkno);
        if (bp->b_bcount > bp->b_bufsize)
                panic("bwrite");
+       s = splbio();
        bp->b_vp->v_numoutput++;
        bp->b_vp->v_numoutput++;
+       splx(s);
        VOP_STRATEGY(bp);
 
        /*
        VOP_STRATEGY(bp);
 
        /*