Obtained from:
Added a new flag (RB_SERIAL) which is passed by the boot block to tell
the kernel that it should use a serial port as a console. (The kernel
can still be forced to boot in serial console mode if 'options COMCONSOLE'
is used.)
much higher filesystem I/O performance, and much better paging performance. It
represents the culmination of over 6 months of R&D.
The majority of the merged VM/cache work is by John Dyson.
The following highlights the most significant changes. Additionally, there are
(mostly minor) changes to the various filesystem modules (nfs, msdosfs, etc) to
support the new VM/buffer scheme.
vfs_bio.c:
Significant rewrite of most of vfs_bio to support the merged VM buffer cache
scheme. The scheme is almost fully compatible with the old filesystem
interface. Significant improvement in the number of opportunities for write
clustering.
vfs_cluster.c, vfs_subr.c
Upgrade and performance enhancements in vfs layer code to support merged
VM/buffer cache. Fixup of vfs_cluster to eliminate the bogus pagemove stuff.
vm_object.c:
Yet more improvements in the collapse code. Elimination of some windows that
can cause list corruption.
vm_pageout.c:
Fixed it, it really works better now. Somehow in 2.0, some "enhancements"
broke the code. This code has been reworked from the ground-up.
vm_fault.c, vm_page.c, pmap.c, vm_object.c
Support for small-block filesystems with merged VM/buffer cache scheme.
pmap.c vm_map.c
Dynamic kernel VM size, now we dont have to pre-allocate excessive numbers of
kernel PTs.
vm_glue.c
Much simpler and more effective swapping code. No more gratuitous swapping.
proc.h
Fixed the problem that the p_lock flag was not being cleared on a fork.
swap_pager.c, vnode_pager.c
Removal of old vfs_bio cruft to support the past pseudo-coherency. Now the
code doesn't need it anymore.
machdep.c
Changes to better support the parameter values for the merged VM/buffer cache
scheme.
machdep.c, kern_exec.c, vm_glue.c
Implemented a seperate submap for temporary exec string space and another one
to contain process upages. This eliminates all map fragmentation problems
that previously existed.
ffs_inode.c, ufs_inode.c, ufs_readwrite.c
Changes for merged VM/buffer cache. Add "bypass" support for sneaking in on
busy buffers.
Submitted by: John Dyson and David Greenman
It used to do this by setting a global <Yuck>. Now we set th VNINACT
flag in the vnode to force a skip of ufs_inactive.
Sorry for missing this file in my last commit folks.
Index: vnode.h
===================================================================
RCS file: /usr/cvs/src/sys/sys/vnode.h,v
retrieving revision 1.14
diff -c -r1.14 vnode.h
*** 1.14 1994/11/14 13:51:53
--- vnode.h 1994/12/03 01:06:27
***************
*** 116,121 ****
--- 116,122 ----
#define VALIASED 0x0800 /* vnode has an alias */
#define VDIROP 0x1000 /* LFS: vnode is involved in a directory op */
#define VVMIO 0x2000 /* VMIO flag */
+ #define VNINACT 0x4000 /* LFS: skip ufs_inactive() in lfs_vunref */
/*
* Vnode attributes. A field value of VNOVAL represents a field whose value
Prepare for disk slices - more macros for handling disk device numbers,
version of readdisklabel() without DOS goop.
Clean up prototypes.
Uniformize idempotency ifdef.
diskslice.h:
New file.
dkbad.h:
Define more magic numbers.
Declare internalized version of dkbad struct and functions to operate on it.
Uniformize idempotency ifdef.
operation of each clist. Limit the growth of each clist. Clists
can only grow larger than the reserved minimum if there are free
cblocks in a shared pool. The size of this pool is now fixed
(this could be improved). The reserved and maximum sizes are more
carefully allocated for slip and ppp, depending on the mtu. A maximum
MTU of 16384 is now enforced for ppp.
I couldn't find a better way to avoid compiler warnings about
redundant and/or inconsistent declaration of ffs(). I'd like to
be able to declare prototypes in general headers without committing
to implementing them as `static inline' or `extern', but there
seems to be no way to do this with gcc-2.6.1. E.g.,
int foo(void);
static __inline int foo(void) { return 1; }
causes a warning about the linkage mismatch, while the opposite
order causes a warning about the redundant declaration.
(These functions are implemented in assembler so the compiler can't
check the declarations.)
Clean up prototypes: restore CSRG's alphabetical order, arg names in
prototypes, formatting to fit in 80 columns
different types, and with the 'local cache', what is freed isn't necessarily
what was originally malloced. This screws malloc's statistics and type
allocation limits, resulting eventually in a deadlock when one of the
limits is bogusly reached. Recent performance tests on a Pentium machine
indicate no improvement with this optimization anyway (this is something
to be looked at further).
This way, it's possible for a user to activate/deactivate floppy driver
debugging, even if (s)he doesn't like the overhead of running DDB.
Since some ppl tend to have problems with their drives, this might be
valuable for investigations.
and all SCSI devices (except that it's not done quite the way I want). New
information added includes:
- A text description of the device
- A ``state''---unknown, unconfigured, idle, or busy
- A generic parent device (with support in the m.i. code)
- An interrupt mask type field (which will hopefully go away) so that
. ``doconfig'' can be written
This requires a new version of the `lsdev' program as well (next commit).