Commit Graph

286 Commits

Author SHA1 Message Date
pk 2d8fd853ae Unlocking the target object within vm_object_overlay() is safe, since
the backing object is protected the OBJ_FADING flag.

In vm_object_deallocate(), gain a reference to the object we try to
collapse (per Manuel Bouyer).
1997-09-08 21:23:22 +00:00
chuck 1821ecc346 import sys_minherit() from openbsd. 1997-09-08 18:19:45 +00:00
pk c5d6596b7c vm_object_deallocate():
Unlock the object cache before looking for collapse candidates.
	Use vm_object_lock_try() to obtain a lock on a collapse candidate.
	This avoids a deadlock due to recursively entering
	vm_object_deallocate() in case a backing object goes away.

vm_object_collapse() and helper functions:
	The object passed in is locked; make sure it is locked when
	we leave vm_object_collapse().

   XXX: Currently, the object is not unlocked during while we possibly
	wait for pager data. We need to consider the effects of
	simultaneous calls to vm_object_collapse() on the same object
	in case unlocking is necessary.
1997-09-07 21:19:41 +00:00
pk 9bec4e7918 Don't hold on to object and queue locks while sleeping. 1997-09-07 20:41:59 +00:00
pk 0c386233d4 Adapt a diagnostic to big-endian machines.
(Not that it actually works on little-endians, but we can easily make it not
work on big-endians all the same).
1997-09-07 20:39:23 +00:00
pk fff424c798 Add missing `unlock(&vm_object_list_lock);' 1997-09-07 19:31:52 +00:00
mrg 66d1e506df remove last vestigates of __FORK_BRAINDAMANGE 1997-08-27 02:35:38 +00:00
drochner 448446ec38 Don't make coredump of areas which are mmap()ed from a device.
This can have bad side effects.
Closes PR kern/3252.
1997-07-22 10:06:43 +00:00
fvdl 933d4afe84 Make vm_map_clear_recursive behave exactly like the old lock_clear_recursive.
This doesn't make a difference in the way that it's currently being called,
but it's more intuitive.
1997-07-20 23:23:45 +00:00
fvdl 5a4803bc55 XXX - some userland code includes this, needing <sys/time.h>, so
include it, for the time being.
1997-07-07 10:57:34 +00:00
fvdl 206e9582ef Move lock.h and kern_lock.c to their rightful places, as in Lite2. Make
the VM code use the new interface.
1997-07-06 12:38:25 +00:00
drochner 8c0a9bab00 Don't cast 64bit (off_t) file sizes to vm_offset_t (32bit on many
architectures), truncate them intelligently instead.
The truncation is done centralized in vnode_pager.c.
This prevents from wrap-over effects when parts of large (>2^32 byte) files
are mmapped.
Don't allow to mmap above the numerical range of vm_offset_t.
This is considered a temporary solution until the vm system handles the
object sizes/offsets more cleanly.
1997-07-04 20:22:09 +00:00
thorpej 657f118b7f Update the status of a couple of items here... specifically, more aggressive
object collapse (DONE), machine-dependent hook for virtual memory allocation
(DONE - PMAP_PREFER()), and better coherency between page and buffer
caches (A LITTLE BETTER - we sync up the vnode pager in the sync(2)
system call now).
1997-06-26 01:02:07 +00:00
mrg 781dfea84f back out previous. look in unistd.h. 1997-06-23 01:15:03 +00:00
christos 796badce6b PR/3772: Matthias Scheler: Missing swapctl prototype. 1997-06-22 19:35:55 +00:00
pk 98ce8ab879 Remove __FORK_BRAINDAMAGEd code; it's no longer needed. 1997-06-19 20:54:15 +00:00
thorpej 3bd11220b6 Don't print a message if the user attempts SWAP_OFF. Return an error
instead.
1997-06-17 03:37:07 +00:00
thorpej c61704d37c Remove the code that sets dumpdev, for two reasons:
- It was incorrect.  A dev_t should _never_ be compared against
  NULL, as 0 is a valid value (major 0, minor 0).
- The operator mave have _intentionally_ set dumpdev to "none"
  (i.e. NODEV), and setting it the first time a VBLK swap device
  is added would break the semantics.
setroot() deals with all dump device selection.  Dumps and swap are now
in no way related.
1997-06-16 20:21:55 +00:00
mrg c78d0720ff - set dumpdev if not already set
- don't use nocoalease (from thorpej).
- fix priority list management (from pk).
- update comment for swapoff.
- free swap device extent name safely (from thorpej).
1997-06-16 13:35:17 +00:00
pk e5b0a8820b As long as we actually use `swapdev_vp', initialize it. 1997-06-13 15:37:17 +00:00
mrg 21cc3ddfd5 bring mrg-vm-swap2 onto mainilne. 1997-06-12 14:51:20 +00:00
thorpej 433c3cae0f Pull thorpej-bus-dma branch into mainline. 1997-06-06 23:10:23 +00:00
gwr 09da7e273e Eliminate vmspace.vm_pmap and all references to it unless
__VM_PMAP_HACK is defined (for temporary compatibility).
The __VM_PMAP_HACK code should be removed after all the
ports that define it have removed all vm_pmap references.
1997-05-16 21:39:50 +00:00
thorpej e73580920d Change to not require including <sys/dmap.h> 1997-04-17 00:12:50 +00:00
thorpej 27b49a0ede XXX Kludge for PowerPC; need to use kernel vfprintf(). 1997-04-17 00:12:08 +00:00
thorpej 90ece8ebcb Declare dmmin, dmmax, swapmap, and nswapmap here. 1997-04-17 00:08:50 +00:00
mycroft 448427b7ba Document a requirement of vm_object_bypass(). 1997-04-08 22:35:49 +00:00
mycroft 69e0aacce3 Remove the `backing_object still referenced' panic, since there's an expected
race with vnode_pager_sync().
1997-04-07 01:57:14 +00:00
mycroft 3a474fa002 Remove a printf() that's no longer needed. 1997-03-03 20:56:12 +00:00
mycroft 700dee447e DTRT if vm_object_lookup() returns NULL. This may happen while an object is
being created or destroyed.
1997-02-27 17:49:05 +00:00
tls fad978b853 a mutex on vnode_pager_sync avoids another race condition, only possible if sync were called again while we were sleeping. This should be the last of this nest of bugs. From mycroft. 1997-02-26 02:26:19 +00:00
thorpej cbb4319fb9 vm_object_shadow(): Add a DIAGNOSTIC check for shadowing a null object.
From Charles Hannum <mycroft@netbsd.org>
1997-02-25 23:28:09 +00:00
thorpej a49641e340 vm_map_copy_entry(): Don't set "needs_copy" on a zero-fill entry.
From Charles Hannum <mycroft@netbsd.org>
1997-02-25 23:27:08 +00:00
thorpej 7327c8cf62 From Charles Hannum:
During a collapse, abort if the object is paging; the pagedaemon can
trigger a collapse, causing deadlock.  (XXX)
1997-02-24 22:19:26 +00:00
mrg 82f19ac36c lite2 1997-02-23 09:58:53 +00:00
mrg 3b9c3fff2e restructure vm_object_overlay() to collapse objects in more cases.
change one diag panic() to a diag printf().  from mycroft.
1997-02-23 09:01:37 +00:00
mrg 8eba4aeacb don't clean fading objects. from mycroft. 1997-02-23 08:56:57 +00:00
thorpej a49beaa16a Possesive, Jason... possesive.... 1997-02-22 04:36:48 +00:00
thorpej 75be8504f4 More good stuff from Charles:
Eliminate a nasty race condition in vnode_pager_sync() by making
two passes.  First, find all of the objects to be cleaned and reference
them.  Second, traverse this list objects, cleaning them if there are
references other than us.
1997-02-22 04:11:42 +00:00
thorpej 255b9d74d8 Rewrite the object chain collapse code. Bugs fixed are too numerous
to describe here.  This should fix the problems with "hanging processes"
people have seen since the original object collapse code was committed.

From Charles Hannum <mycroft@netbsd.org>
1997-02-21 20:30:49 +00:00
thorpej 235a2d71f7 Use vm_object_paging() to test if an object has pages in transit.
From Charles Hannum <mycroft@netbsd.org>
1997-02-21 20:27:21 +00:00
thorpej dd8d0f1f00 Define a macro to test if an object has pages in transit. Clarify
some arithmetic, and nuke an unneeded prototype.

From Charles Hannum <mycroft@netbsd.org>.
1997-02-21 20:26:03 +00:00
thorpej 17b60fc6e9 In vnode_pager_sync(), we need to vm_object_deallocate() after cleaning
pages.  Noticed by Thor Simon <tls@netbsd.org>, confirmed by
Charles Hannum <mycroft@netbsd.org>
1997-02-21 20:22:39 +00:00
mrg 42ae012452 This is all from mycroft:
Create macros (with names borrowed from Mach 3) to manipulate
object->paging_in_progress, and use them.  When decreasing the
paging count, always make sure to wake up anyone waiting.
Fixes `vospgc', `vosca1', and `vosca2' hangs.
1997-02-18 13:39:31 +00:00
tls 127c6b54e7 Sigh. I initially had this exactly backwards: the object needs to be locked, the vnode does *not*. Avoids panic: locking against myself quickly reported by Charles. 1997-02-17 13:10:28 +00:00
tls a507fda378 vnode_pager_sync bugs: A) must lock the object, not just the vnode. B) Don't remove the object from paging queues, because we'd have to put it back on one. The pagedaemon will eventually take care of this for us anyway. This was causing us to *lose track of pages completely* every time vnode_pager_sync() was called... sigh. Credit goes to mycroft for untangling this mess. 1997-02-17 06:22:52 +00:00
tls 4b1213d27c sync needs to clean VM objects backed by vnode pagers 1997-02-13 02:54:06 +00:00
mrg 491e8af174 minor KNF from jason. 1997-02-05 08:26:25 +00:00
mrg eadd7792d9 add thread_sleep_msg() that takes a wait message, and change thread_sleep()
into a macro for backwards compat.  alter vm_object_sleep() to take advantage
of this.
1997-02-05 08:09:45 +00:00
mrg 85328f7b35 KNF. 1997-02-05 07:48:42 +00:00