diff options
author | dg <dg@FreeBSD.org> | 1994-04-20 07:06:57 +0000 |
---|---|---|
committer | dg <dg@FreeBSD.org> | 1994-04-20 07:06:57 +0000 |
commit | 239ae571f10a3f7885fe0f0fe33a7546b8d7dc17 (patch) | |
tree | 7118f27f8fa90ed63832ce7e42891b5648124645 /sys/scsi/scsi_base.c | |
parent | c080508e59d107b34f2c1e9ce9f35037e377a239 (diff) | |
download | FreeBSD-src-239ae571f10a3f7885fe0f0fe33a7546b8d7dc17.zip FreeBSD-src-239ae571f10a3f7885fe0f0fe33a7546b8d7dc17.tar.gz |
Bug fixes and performance improvements from John Dyson and myself:
1) check va before clearing the page clean flag. Not doing so was
causing the vnode pager error 5 messages when paging from
NFS. (pmap.c)
2) put back interrupt protection in idle_loop. Bruce didn't think
it was necessary, John insists that it is (and I agree). (swtch.s)
3) various improvements to the clustering code (vm_machdep.c). It's
now enabled/used by default.
4) bad disk blocks are now handled properly when doing clustered IOs.
(wd.c, vm_machdep.c)
5) bogus bad block handling fixed in wd.c.
6) algorithm improvements to the pageout/pagescan daemons. It's amazing
how well 4MB machines work now.
Diffstat (limited to 'sys/scsi/scsi_base.c')
-rw-r--r-- | sys/scsi/scsi_base.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/sys/scsi/scsi_base.c b/sys/scsi/scsi_base.c index d6d569f..2fd0c7f 100644 --- a/sys/scsi/scsi_base.c +++ b/sys/scsi/scsi_base.c @@ -8,7 +8,7 @@ * file. * * Written by Julian Elischer (julian@dialix.oz.au) - * $Id: scsi_base.c,v 1.5 1994/01/29 10:30:37 rgrimes Exp $ + * $Id: scsi_base.c,v 1.6 1994/02/07 02:15:01 rgrimes Exp $ */ #define SPLSD splbio @@ -455,7 +455,11 @@ scsi_scsi_cmd(sc_link, scsi_cmd, cmdlen, data_addr, datalen, retval = EFAULT; goto bad; } - xs->data = malloc(datalen, M_TEMP, M_WAITOK); +#ifdef NOBOUNCE + xs->data = malloc(datalen, M_TEMP, M_WAITOK); +#else + xs->data = (caddr_t) vm_bounce_kva_alloc( (datalen + PAGE_SIZE - 1)/PAGE_SIZE); +#endif /* I think waiting is ok *//*XXX */ switch ((int)(flags & (SCSI_DATA_IN | SCSI_DATA_OUT))) { case 0: @@ -538,7 +542,11 @@ retry: bcopy(xs->data, data_addr, datalen); break; } +#ifdef NOBOUNCE free(xs->data, M_TEMP); +#else + vm_bounce_kva_alloc_free(xs->data, (datalen + PAGE_SIZE - 1)/PAGE_SIZE, 0); +#endif } /* * we have finished with the xfer stuct, free it and |