diff options
author | rgrimes <rgrimes@FreeBSD.org> | 1994-05-25 09:21:21 +0000 |
---|---|---|
committer | rgrimes <rgrimes@FreeBSD.org> | 1994-05-25 09:21:21 +0000 |
commit | 2469c867a164210ce96143517059f21db7f1fd17 (patch) | |
tree | 9179427ac860211c445df663fd2b86267366bfba /sys/vm/vm_swap.c | |
parent | cb0aba89af15a48e2655e898a503946ac4cb42ae (diff) | |
download | FreeBSD-src-2469c867a164210ce96143517059f21db7f1fd17.zip FreeBSD-src-2469c867a164210ce96143517059f21db7f1fd17.tar.gz |
The big 4.4BSD Lite to FreeBSD 2.0.0 (Development) patch.
Reviewed by: Rodney W. Grimes
Submitted by: John Dyson and David Greenman
Diffstat (limited to 'sys/vm/vm_swap.c')
-rw-r--r-- | sys/vm/vm_swap.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/sys/vm/vm_swap.c b/sys/vm/vm_swap.c index 10b7523..5008a09 100644 --- a/sys/vm/vm_swap.c +++ b/sys/vm/vm_swap.c @@ -51,6 +51,7 @@ */ int nswap, nswdev; +int vm_swap_size; #ifdef SEQSWAP int niswdev; /* number of interleaved swap devices */ int niswap; /* size of interleaved swap area */ @@ -143,9 +144,8 @@ swapinit() /* * Now set up swap buffer headers. */ - bswlist.b_actf = sp; for (i = 0; i < nswbuf - 1; i++, sp++) { - sp->b_actf = sp + 1; + TAILQ_INSERT_HEAD(&bswlist, sp, b_freelist); sp->b_rcred = sp->b_wcred = p->p_ucred; sp->b_vnbufs.le_next = NOLIST; } @@ -390,12 +390,18 @@ swfree(p, index) blk = niswap; for (swp = &swdevt[niswdev]; swp != sp; swp++) blk += swp->sw_nblks; +#if 0 rmfree(swapmap, nblks, blk); return (0); +#endif + rlist_free(&swapmap, blk, blk + nblks - 1); + vm_swap_size += nblks; + return (0); } #endif for (dvbase = 0; dvbase < nblks; dvbase += dmmax) { blk = nblks - dvbase; + #ifdef SEQSWAP if ((vsbase = index*dmmax + dvbase*niswdev) >= niswap) panic("swfree"); @@ -405,6 +411,7 @@ swfree(p, index) #endif if (blk > dmmax) blk = dmmax; +#if 0 if (vsbase == 0) { /* * First of all chunks... initialize the swapmap. @@ -422,6 +429,11 @@ swfree(p, index) vsbase + ctod(CLSIZE)); } else rmfree(swapmap, blk, vsbase); +#endif + /* XXX -- we need to exclude the first cluster as above */ + /* but for now, this will work fine... */ + rlist_free(&swapmap, vsbase, vsbase + blk - 1); + vm_swap_size += blk; } return (0); } |