Bruce Evans
3aa12267a5
Add and move declarations to fix all of the warnings from `gcc -Wimplicit'
...
(except in netccitt, netiso and netns) that I didn't notice when I fixed
"all" such warnings before.
1995-03-28 07:58:53 +00:00
David Greenman
17c4c40800
Fixed typo...using wrong variable in page_shortage calculation.
1995-03-28 05:58:35 +00:00
David Greenman
0bb3a0d2f4
Fixed "pages freed by daemon" statistic (again).
1995-03-28 05:35:29 +00:00
David Greenman
2ddba2158c
Explicitly set page dirty if this is a write fault - reduces calls to
...
pmap_is_modified() later.
1995-03-27 02:41:00 +00:00
David Greenman
8953151fc8
Removed some obsolete flags.
...
Submitted by: John Dyson
1995-03-26 23:33:14 +00:00
David Greenman
6c534ad868
Fix logic bug I just introduced with the flags to msync().
1995-03-25 17:44:03 +00:00
David Greenman
492d73bd99
Pass syncio flag to vm_object_clean(). It remains unimplemented, however.
1995-03-25 17:36:57 +00:00
David Greenman
1e62bc6357
Disallow both MS_ASYNC and MS_INVALIDATE flags being set at the same time
...
in msync().
1995-03-25 17:36:00 +00:00
David Greenman
e6c6af1149
Added "flags" argument to msync, and implemented MS_ASYNC and MS_INVALIDATE.
...
The MS_ASYNC flag doesn't current work, and MS_INVALIDATE will only toss out
the pages in the address space (not all pages in the shadow chain).
1995-03-25 16:55:46 +00:00
David Greenman
7fd9a8b12f
Implemented cnt.v_reactivated and moved vm_page_activate() routine to
...
before vm_page_deactivate().
1995-03-25 08:47:35 +00:00
David Greenman
260295f979
Removed (almost) meaningless "object cache lookups/hits" statistic. In
...
our framework, these numbers will usually be nearly the same, and not
because of any sort of high 'hit rate'.
1995-03-25 08:42:14 +00:00
David Greenman
a34297995a
Removed cnt.v_nzfod: In our current scheme of things it is not possible
...
to accurately track this. It isn't an indicator of resource consumption
anyway.
Removed cnt.v_kernel_pages: We don't implement this and doing so accurately
would be very difficult (and ambiguous - since process pages are often
double mapped in the kernel and the process address spaces).
1995-03-25 06:09:33 +00:00
David Greenman
d7a0fc9360
Fixed warning caused by returning a value in a void function (introduced
...
in a recent commit by me). Relaxed checks before calling vm_object_remove;
a non-internal object always has a pager.
1995-03-23 05:19:44 +00:00
David Greenman
f5cf85d40a
Removed unused fifth argument to vm_object_page_clean(). Fixed bug with
...
VTEXT not always getting cleared when it is supposed to. Added check to
make sure that vm_object_remove() isn't called with a NULL pager or for
a pager for an OBJ_INTERNAL object (neither of which will be on the hash
list). Clear OBJ_CANPERSIST if we decide to terminate it because of no
resident pages.
1995-03-22 12:24:11 +00:00
David Greenman
563128e49e
Fixed potential sleep/wakeup race conditional with splhigh().
...
Submitted by: John Dyson
1995-03-22 08:08:44 +00:00
David Greenman
c419d77e29
Added a check for wrong object size; print a warning, but deal with it
...
correctly. The warning will tell us that there is a bug somewhere else
in sizing the object correctly.
Submitted by: John Dyson
1995-03-22 05:12:18 +00:00
David Greenman
8f4e17d4b2
Fixed bug in vm_mmap() where the object that is created in some cases
...
was the wrong size. This is the likely cause of panics reported by
Lars Fredriksen and Paul Richards related to a -1 blkno when paging
via the swap_pager.
Submitted by: John Dyson
1995-03-22 05:08:41 +00:00
David Greenman
1b369d9858
Removed unused variable declaration missed in previous commit.
1995-03-21 23:09:53 +00:00
David Greenman
71263bf8db
Removed do-nothing VOP_UPDATE() call.
1995-03-21 23:07:19 +00:00
David Greenman
bc9ad24756
Disallow non page-aligned file offsets in vm_mmap(). We don't support this
...
in either the high or low level parts of the VM system. Just return EINVAL
in this case, just like SunOS does.
1995-03-21 10:15:52 +00:00
David Greenman
fbcfcdf7db
Fixed bug in the size == 0 case of msync() caused by a bogus return value
...
check..
1995-03-21 02:54:04 +00:00
David Greenman
7c1f6cedec
Added a new boolean argument to vm_object_page_clean that causes it to
...
only toss out clean pages if TRUE.
1995-03-21 01:11:44 +00:00
David Greenman
0426122fa0
Don't gain/lose an object reference in vnode_pager_setsize(). It will
...
cause vnode locking problems in vm_object_terminate().
Implement proper vnode locking in vm_object_terminate().
1995-03-20 10:20:42 +00:00
David Greenman
9ba0a56334
Fixed "objde1" hang. It was caused by a "&" where an "&&" belonged in the
...
expression that decides if a wakeup should occur.
1995-03-20 10:14:55 +00:00
David Greenman
83edfd47d8
Removed an unnecessary call to vinvalbuf after the page clean.
1995-03-20 02:06:09 +00:00
David Greenman
0bdb7528db
Do proper vnode locking when doing paging I/O. Removed the asynchronous
...
paging capability to facilitate this (we saw little or no measureable
improvement with this anyway).
Submitted by: John Dyson
1995-03-19 23:46:25 +00:00
David Greenman
edf8a81561
Removed redundant newlines that were in some panic strings.
1995-03-19 14:29:26 +00:00
David Greenman
c01a9b8ca0
Incorporated 4.4-lite vnode_pager_uncache() and vnode_pager_umount()
...
routines (and merged local changes). The changed vnode_pager_uncache
gets rids of the bogosity that you can call the routine without
having the vnode locked. The changed vnode_pager_umount properly locks
the vnode before calling vnode_pager_uncache.
1995-03-19 12:36:10 +00:00
David Greenman
806e386083
In vm_page_alloc_contig: Removed a redundant semicolon and used 'm' instead
...
of &pga[i] in one place.
1995-03-18 01:04:36 +00:00
Bruce Evans
b5e8ce9f12
Add and move declarations to fix all of the warnings from `gcc -Wimplicit'
...
(except in netccitt, netiso and netns) and most of the warnings from
`gcc -Wnested-externs'. Fix all the bugs found. There were no serious
ones.
1995-03-16 18:17:34 +00:00
David Greenman
5eb7d0cd2e
Special cased the handling of mb_map in the M_WAITOK case. kmem_malloc()
...
now returns NULL and sets a global 'mb_map_full' when the map is full.
m_clalloc() has further been taught to expect this and do the right thing.
This should fix the "mb_map full" panics that several people have reported.
1995-03-15 07:52:06 +00:00
Bruce Evans
1475d9283e
Move a kernel inline function inside `#ifdef KERNEL' so that including
...
<vm/vm.h> doesn't cause warnings about nonexistent functions called
by the inline function. Clean up the formatting of the function.
1995-03-12 12:42:00 +00:00
David Greenman
c4ed5a07a5
Fixed obsolete comment.
1995-03-12 08:11:34 +00:00
David Greenman
6879ca0fcd
Deleted vm_object_setpager().
1995-03-12 08:05:46 +00:00
David Greenman
61ca29b0e5
Deleted vm_object_setpager().
1995-03-12 07:58:29 +00:00
David Greenman
4bb624613f
Explicitly set object->flags = OBJ_CANPERSIST.
1995-03-12 07:56:06 +00:00
David Greenman
a14e8fd032
Fix completely bogus comment.
1995-03-11 22:25:20 +00:00
David Greenman
63635f5ae2
Clear OBJ_INTERNAL flag for device pager objects and named anonymous
...
objects.
1995-03-11 22:25:02 +00:00
David Greenman
0007244260
Set VAGE flag when pager is destroyed. This usually happens when an
...
object has fallen off the end of the cached list - this is likely the
last reference to the vnode and it should be reused before non file
vnodes that are already on the free list (VDIR mostly).
1995-03-07 19:04:10 +00:00
David Greenman
f2da180f8e
Fixed object reference count problem that occurred in the MAP_PRIVATE
...
case after we rewrote vm_mmap(). Added some comments to make it easier
to follow the reference counts.
1995-03-07 17:27:49 +00:00
David Greenman
be6d5bfac7
Don't attempt to reverse collapse non OBJ_INTERNAL objects.
1995-03-07 17:25:46 +00:00
Jordan K. Hubbard
7b936a1e66
Remove a gratutious cast.
1995-03-04 21:14:19 +00:00
David Greenman
f919ebde54
Various changes from John and myself that do the following:
...
New functions create - vm_object_pip_wakeup and pagedaemon_wakeup that
are used to reduce the actual number of wakeups.
New function vm_page_protect which is used in conjuction with some new
page flags to reduce the number of calls to pmap_page_protect.
Minor changes to reduce unnecessary spl nesting.
Rewrote vm_page_alloc() to improve readability.
Various other mostly cosmetic changes.
1995-03-01 23:30:04 +00:00
David Greenman
54ab07303b
Slight change to include file order to accommodate upcoming changes.
1995-03-01 21:37:44 +00:00
Bruce Evans
4f9fb771a5
Don't use __P(()) in a function definition.
1995-02-25 18:39:04 +00:00
David Greenman
c3a1e4250f
Fixed severely broken printf (arguments out of order, no newline).
1995-02-25 17:02:48 +00:00
David Greenman
b106f3b255
Removed redundant HOLDRELE()'s.
1995-02-23 22:32:38 +00:00
David Greenman
187f007190
Changed return value from vnode_pager_addr to be in DEV_BSIZE units so
...
that 9 bits aren't lost in the conversion. Changed all callers to expect
this. This allows paging on large (>2GB) filesystems.
Submitted by: John Dyson
1995-02-22 10:34:34 +00:00
David Greenman
6f2b142ed8
vm_page.c:
...
Use request==VM_ALLOC_NORMAL rather than object!=kmem_object in deciding
if the caller is "important" in vm_page_alloc(). Also established a new
low threshold for non-interrupt allocations via cnt.v_interrupt_free_min.
vm_pageout.c:
Various algorithmic cleanup. Some calculations simplified. Initialize
cnt.v_interrupt_free_min to 2 pages.
Submitted by: John Dyson
1995-02-22 10:27:24 +00:00
David Greenman
5e716206c0
Just return in the case of a page not on any queue in vm_page_unqueue().
...
Return VM_PAGE_BITS_ALL even if size > PAGE_SIZE in vm_page_bits().
Submitted by: John Dyson
1995-02-22 10:16:21 +00:00