deal with shortages of the VM maps where the backing pages are mapped
(usually kmem_map). Try to deal with this:
* Group all information about the backend allocator for a pool in a
separate structure. The pool references this structure, rather than
the individual fields.
* Change the pool_init() API accordingly, and adjust all callers.
* Link all pools using the same backend allocator on a list.
* The backend allocator is responsible for waiting for physical memory
to become available, but will still fail if it cannot callocate KVA
space for the pages. If this happens, carefully drain all pools using
the same backend allocator, so that some KVA space can be freed.
* Change pool_reclaim() to indicate if it actually succeeded in freeing
some pages, and use that information to make draining easier and more
efficient.
* Get rid of PR_URGENT. There was only one use of it, and it could be
dealt with by the caller.
From art@openbsd.org.
the number of partitions is > OLDMAXPARTITIONS. This is better
than silently truncating the label (don't want to silently throw
away partitions when using an old disklabel binary on a label with
> 8 partitions). From Enami Tsugutomo.
- guard against synchronous I/O completion
- avoid race conditions
- use bgetvp/brelvp to properly maintain the vnode holdcount
and clean/dirty buffer lists.
greater flexibility in its use. Additionally, add support for "geometry
emulation". This allows the "geometry" of the "disk" to be specified
at config time, providing near-perfect emulation of disklabel-less floppies,
CD-ROMs, etc., including non-512-byte sectors. If a geometry is not
specified at config time, a default based on 1M cylinders will be used.
if VOP_BMAP() does not produce a translation.
IO_SYNC is used to prevent dirty file cache buffers. On a ffs filesystem,
once a hole is filled, subsequent vnd accesses find will find valid
VOP_BMAP() translations.
Concerns:
* is the assumed semantics correct for all filesystems?
* do we actually want the automagic extension on the VND
backing store..
initiated by vnd_strategy(). This allows for more natural error handling
and solves two bugs:
* vnd can disk_unbusy without disk_busy (PR#2657)
* b_resid is set correctly on the external at the end
of a transfer in case of an error.