diff options
author | Thordur I. Bjornsson <thib@cvs.openbsd.org> | 2009-06-17 01:30:33 +0000 |
---|---|---|
committer | Thordur I. Bjornsson <thib@cvs.openbsd.org> | 2009-06-17 01:30:33 +0000 |
commit | 3ee68d23a3466d2029ffb173fb427cbe52bf1c22 (patch) | |
tree | 9836d4f2fe25decc84e3ffcba4a9c31e9b946d7c /sys/kern | |
parent | c51365090d32d88879756762d7720c7761a80060 (diff) |
Revert bufq's. this is inline with the major midlayer reverts that
have been going on. this appears to bring us back to stable state.
lots of testing by oga and ariane and my self.
Diffstat (limited to 'sys/kern')
-rw-r--r-- | sys/kern/kern_bufq.c | 154 | ||||
-rw-r--r-- | sys/kern/subr_disk.c | 11 |
2 files changed, 2 insertions, 163 deletions
diff --git a/sys/kern/kern_bufq.c b/sys/kern/kern_bufq.c deleted file mode 100644 index 8af3a312f0f..00000000000 --- a/sys/kern/kern_bufq.c +++ /dev/null @@ -1,154 +0,0 @@ -/* $OpenBSD: kern_bufq.c,v 1.2 2009/06/04 19:16:13 thib Exp $ */ - -/* - * Copyright (c) 2008, 2009 Thordur I. Bjornsson <thib@openbsd.org> - * Copyright (c) 2004 Ted Unangst <tedu@openbsd.org> - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/kernel.h> -#include <sys/malloc.h> -#include <sys/pool.h> -#include <sys/proc.h> -#include <sys/buf.h> -#include <sys/errno.h> - -#include <sys/disklabel.h> - -/* plain old disksort. */ -struct buf *bufq_disksort_get(struct bufq *, int); -void bufq_disksort_add(struct bufq *, struct buf *); -int bufq_disksort_init(struct bufq *); - -struct bufq * -bufq_init(int type) -{ - struct bufq *bq; - int error; - - KASSERT(type = BUFQ_DISKSORT); - - bq = malloc(sizeof(*bq), M_DEVBUF, M_NOWAIT|M_ZERO); - if (bq == NULL) - return (NULL); - - /* For now, only plain old disksort. */ - bq->bufq_type = type; - bq->bufq_get = bufq_disksort_get; - bq->bufq_add = bufq_disksort_add; - - error = bufq_disksort_init(bq); - if (error) { - free(bq, M_DEVBUF); - return (NULL); - } - - return (bq); -} - -void -bufq_destroy(struct bufq *bq) -{ - bufq_drain(bq); - - if (bq->bufq_data != NULL) - free(bq->bufq_data, M_DEVBUF); - - free(bq, M_DEVBUF); -} - -void -bufq_drain(struct bufq *bq) -{ - struct buf *bp; - int s; - - s = splbio(); - while ((bp = BUFQ_GET(bq)) != NULL) { - bp->b_error = ENXIO; - bp->b_flags |= B_ERROR; - biodone(bp); - } - splx(s); - -} - -void -bufq_disksort_add(struct bufq *bq, struct buf *bp) -{ - struct buf *bufq; - - splassert(IPL_BIO); - - bufq = (struct buf *)bq->bufq_data; - - disksort(bufq, bp); -} - -struct buf * -bufq_disksort_get(struct bufq *bq, int peeking) -{ - struct buf *bufq, *bp; - - splassert(IPL_BIO); - - bufq = (struct buf *)bq->bufq_data; - bp = bufq->b_actf; - if (bp == NULL) - return (NULL); - if (!peeking) - bufq->b_actf = bp->b_actf; - return (bp); -} - -int -bufq_disksort_init(struct bufq *bq) -{ - int error = 0; - - bq->bufq_data = malloc(sizeof(struct buf), M_DEVBUF, - M_WAITOK|M_ZERO); - - if (bq->bufq_data == NULL) - error = ENOMEM; - - return (error); -} - -#ifdef DDB -#include <machine/db_machdep.h> -#include <ddb/db_interface.h> -#include <ddb/db_output.h> - -void -db_bufq_print(struct bufq *bq, int full, int (*pr)(const char *, ...)) -{ - struct buf *bp, *dp; - - - (*pr)(" type %i\n bufq_add %p bufq_get %p bufq_data %p", - bq->bufq_type, bq->bufq_add, bq->bufq_get, bq->bufq_data); - - if (full) { - printf("bufs on queue:\n"); - bp = (struct buf *)bq->bufq_data; - while ((dp = bp->b_actf) != NULL) { - printf("%p\n", bp); - bp = dp; - } - } -} - -#endif diff --git a/sys/kern/subr_disk.c b/sys/kern/subr_disk.c index d33a152d299..e1dbaa310b6 100644 --- a/sys/kern/subr_disk.c +++ b/sys/kern/subr_disk.c @@ -1,4 +1,4 @@ -/* $OpenBSD: subr_disk.c,v 1.94 2009/06/14 00:09:40 deraadt Exp $ */ +/* $OpenBSD: subr_disk.c,v 1.95 2009/06/17 01:30:30 thib Exp $ */ /* $NetBSD: subr_disk.c,v 1.17 1996/03/16 23:17:08 christos Exp $ */ /* @@ -768,10 +768,6 @@ disk_construct(struct disk *diskp, char *lockname) rw_init(&diskp->dk_lock, "dklk"); mtx_init(&diskp->dk_mtx, IPL_BIO); - diskp->dk_bufq = bufq_init(BUFQ_DEFAULT); - if (diskp->dk_bufq == NULL) - return (1); - diskp->dk_flags |= DKF_CONSTRUCTED; return (0); @@ -785,8 +781,7 @@ disk_attach(struct disk *diskp) { if (!ISSET(diskp->dk_flags, DKF_CONSTRUCTED)) - if (disk_construct(diskp, diskp->dk_name)) - panic("disk_attach: can't construct disk"); + disk_construct(diskp, diskp->dk_name); /* * Allocate and initialize the disklabel structures. Note that @@ -829,8 +824,6 @@ disk_detach(struct disk *diskp) */ free(diskp->dk_label, M_DEVBUF); - bufq_destroy(diskp->dk_bufq); - /* * Remove from the disklist. */ |