save the bufq pointer from the buf before we turn it loose so it won't
authortedu <tedu@openbsd.org>
Fri, 9 Jan 2015 05:04:22 +0000 (05:04 +0000)
committertedu <tedu@openbsd.org>
Fri, 9 Jan 2015 05:04:22 +0000 (05:04 +0000)
change on us. also, remove unused second arg to bufq_wait.
from pedro at bitrig via david hill.
ok beck kettenis

sys/kern/kern_bufq.c
sys/kern/vfs_bio.c
sys/sys/buf.h

index 911fe1b..4cba9f1 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: kern_bufq.c,v 1.28 2014/07/12 18:43:32 tedu Exp $     */
+/*     $OpenBSD: kern_bufq.c,v 1.29 2015/01/09 05:04:22 tedu Exp $     */
 /*
  * Copyright (c) 2010 Thordur I. Bjornsson <thib@openbsd.org>
  * Copyright (c) 2010 David Gwynne <dlg@openbsd.org>
@@ -239,7 +239,7 @@ bufq_drain(struct bufq *bq)
 }
 
 void
-bufq_wait(struct bufq *bq, struct buf *bp)
+bufq_wait(struct bufq *bq)
 {
        if (bq->bufq_hi) {
                assertwaitok();
index fd2d47a..e773694 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: vfs_bio.c,v 1.165 2014/12/16 18:30:04 tedu Exp $      */
+/*     $OpenBSD: vfs_bio.c,v 1.166 2015/01/09 05:04:22 tedu Exp $      */
 /*     $NetBSD: vfs_bio.c,v 1.44 1996/06/11 11:15:36 pk Exp $  */
 
 /*
@@ -516,6 +516,7 @@ bwrite(struct buf *bp)
        int rv, async, wasdelayed, s;
        struct vnode *vp;
        struct mount *mp;
+       struct bufq *bq;
 
        vp = bp->b_vp;
        if (vp != NULL)
@@ -569,6 +570,7 @@ bwrite(struct buf *bp)
 
        /* Initiate disk write.  Make sure the appropriate party is charged. */
        bp->b_vp->v_numoutput++;
+       bq = bp->b_bq;
        splx(s);
        SET(bp->b_flags, B_WRITEINPROG);
        VOP_STRATEGY(bp);
@@ -578,8 +580,8 @@ bwrite(struct buf *bp)
         * the number of outstanding write bufs drops below the low
         * water mark.
         */
-       if (bp->b_bq)
-               bufq_wait(bp->b_bq, bp);
+       if (bq)
+               bufq_wait(bq);
 
        if (async)
                return (0);
index 7154463..b6f3b06 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: buf.h,v 1.96 2014/11/17 16:48:33 tedu Exp $   */
+/*     $OpenBSD: buf.h,v 1.97 2015/01/09 05:04:22 tedu Exp $   */
 /*     $NetBSD: buf.h,v 1.25 1997/04/09 21:12:17 mycroft Exp $ */
 
 /*
@@ -101,7 +101,7 @@ void                 bufq_requeue(struct bufq *, struct buf *);
 int             bufq_peek(struct bufq *);
 void            bufq_drain(struct bufq *);
 
-void            bufq_wait(struct bufq *, struct buf *);
+void            bufq_wait(struct bufq *);
 void            bufq_done(struct bufq *, struct buf *);
 void            bufq_quiesce(void);
 void            bufq_restart(void);