#
09c817ba |
| 03-Jul-2009 |
Oleksandr Tymoshenko <gonzo@FreeBSD.org> |
- MFC
|
#
3364c323 |
| 23-Jun-2009 |
Konstantin Belousov <kib@FreeBSD.org> |
Implement global and per-uid accounting of the anonymous memory. Add rlimit RLIMIT_SWAP that limits the amount of swap that may be reserved for the uid.
The accounting information (charge) is associ
Implement global and per-uid accounting of the anonymous memory. Add rlimit RLIMIT_SWAP that limits the amount of swap that may be reserved for the uid.
The accounting information (charge) is associated with either map entry, or vm object backing the entry, assuming the object is the first one in the shadow chain and entry does not require COW. Charge is moved from entry to object on allocation of the object, e.g. during the mmap, assuming the object is allocated, or on the first page fault on the entry. It moves back to the entry on forks due to COW setup.
The per-entry granularity of accounting makes the charge process fair for processes that change uid during lifetime, and decrements charge for proper uid when region is unmapped.
The interface of vm_pager_allocate(9) is extended by adding struct ucred *, that is used to charge appropriate uid when allocation if performed by kernel, e.g. md(4).
Several syscalls, among them is fork(2), may now return ENOMEM when global or per-uid limits are enforced.
In collaboration with: pho Reviewed by: alc Approved by: re (kensmith)
show more ...
|
Revision tags: release/7.2.0_cvs, release/7.2.0 |
|
#
1829d5da |
| 12-Mar-2009 |
Warner Losh <imp@FreeBSD.org> |
Update the projects tree to a newer FreeBSD current.
|
#
af83f5d7 |
| 24-Feb-2009 |
Roman Divacky <rdivacky@FreeBSD.org> |
Change the functions to ANSI in those cases where it breaks promotion to int rule. See ISO C Standard: SS6.7.5.3:15.
Approved by: kib (mentor) Reviewed by: warner Tested by: silence on -current
|
Revision tags: release/7.1.0_cvs, release/7.1.0, release/6.4.0_cvs, release/6.4.0, release/7.0.0_cvs, release/7.0.0, release/6.3.0_cvs, release/6.3.0 |
|
#
b5e8f167 |
| 05-Aug-2007 |
Alan Cox <alc@FreeBSD.org> |
Consider a scenario in which one processor, call it Pt, is performing vm_object_terminate() on a device-backed object at the same time that another processor, call it Pa, is performing dev_pager_allo
Consider a scenario in which one processor, call it Pt, is performing vm_object_terminate() on a device-backed object at the same time that another processor, call it Pa, is performing dev_pager_alloc() on the same device. The problem is that vm_pager_object_lookup() should not be allowed to return a doomed object, i.e., an object with OBJ_DEAD set, but it does. In detail, the unfortunate sequence of events is: Pt in vm_object_terminate() holds the doomed object's lock and sets OBJ_DEAD on the object. Pa in dev_pager_alloc() holds dev_pager_sx and calls vm_pager_object_lookup(), which returns the doomed object. Next, Pa calls vm_object_reference(), which requires the doomed object's lock, so Pa waits for Pt to release the doomed object's lock. Pt proceeds to the point in vm_object_terminate() where it releases the doomed object's lock. Pa is now able to complete vm_object_reference() because it can now complete the acquisition of the doomed object's lock. So, now the doomed object has a reference count of one! Pa releases dev_pager_sx and returns the doomed object from dev_pager_alloc(). Pt now acquires dev_pager_mtx, removes the doomed object from dev_pager_object_list, releases dev_pager_mtx, and finally calls uma_zfree with the doomed object. However, the doomed object is still in use by Pa.
Repeating my key point, vm_pager_object_lookup() must not return a doomed object. Moreover, the test for the object's state, i.e., doomed or not, and the increment of the object's reference count should be carried out atomically.
Reviewed by: kib Approved by: re (kensmith) MFC after: 3 weeks
show more ...
|
Revision tags: release/6.2.0_cvs, release/6.2.0, release/5.5.0_cvs, release/5.5.0, release/6.1.0_cvs, release/6.1.0, release/6.0.0_cvs, release/6.0.0 |
|
#
5bb84bc8 |
| 31-Oct-2005 |
Robert Watson <rwatson@FreeBSD.org> |
Normalize a significant number of kernel malloc type names:
- Prefer '_' to ' ', as it results in more easily parsed results in memory monitoring tools such as vmstat.
- Remove punctuation that i
Normalize a significant number of kernel malloc type names:
- Prefer '_' to ' ', as it results in more easily parsed results in memory monitoring tools such as vmstat.
- Remove punctuation that is incompatible with using memory type names as file names, such as '/' characters.
- Disambiguate some collisions by adding subsystem prefixes to some memory types.
- Generally prefer lower case to upper case.
- If the same type is defined in multiple architecture directories, attempt to use the same name in additional cases.
Not all instances were caught in this change, so more work is required to finish this conversion. Similar changes are required for UMA zone names.
show more ...
|
#
857b66d5 |
| 13-Aug-2005 |
Alexander Kabaev <kan@FreeBSD.org> |
Do not use vm_pager_init() to initialize vnode_pbuf_freecnt variable. vm_pager_init() is run before required nswbuf variable has been set to correct value. This caused system to run with single pbuf
Do not use vm_pager_init() to initialize vnode_pbuf_freecnt variable. vm_pager_init() is run before required nswbuf variable has been set to correct value. This caused system to run with single pbuf available for vnode_pager. Handle both cluster_pbuf_freecnt and vnode_pbuf_freecnt variable in the same way.
Reported by: ade Obtained from: alc MFC after: 2 days
show more ...
|
#
ab973359 |
| 18-May-2005 |
Alan Cox <alc@FreeBSD.org> |
Remove calls to spl*().
|
Revision tags: release/5.4.0_cvs, release/5.4.0 |
|
#
253de0a1 |
| 10-Feb-2005 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Make npages static and const.
|
Revision tags: release/4.11.0_cvs, release/4.11.0 |
|
#
60727d8b |
| 07-Jan-2005 |
Warner Losh <imp@FreeBSD.org> |
/* -> /*- for license, minor formatting changes
|
#
5c6e573f |
| 15-Nov-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Add pbgetbo()/pbrelbo() lighter weight versions of pbgetvp()/pbrelvp().
|
#
287013d2 |
| 15-Nov-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
More kasserts.
|
#
d7fe1f51 |
| 15-Nov-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
style polishing.
|
#
a752aa8f |
| 15-Nov-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Move pbgetvp() and pbrelvp() to vm_pager.c with the rest of the pbuf stuff.
|
#
e8a7bef3 |
| 15-Nov-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
expect the caller to have called pbrelvp() if necessary.
|
Revision tags: release/5.3.0_cvs, release/5.3.0 |
|
#
6e67e2a7 |
| 04-Nov-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Retire b_magic now, we have the bufobj containing the same hint.
|
#
b792bebe |
| 24-Oct-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Move the buffer method vector (buf->b_op) to the bufobj.
Extend it with a strategy method.
Add bufstrategy() which do the usual VOP_SPECSTRATEGY/VOP_STRATEGY song and dance.
Rename ibwrite to bufw
Move the buffer method vector (buf->b_op) to the bufobj.
Extend it with a strategy method.
Add bufstrategy() which do the usual VOP_SPECSTRATEGY/VOP_STRATEGY song and dance.
Rename ibwrite to bufwrite().
Move the two NFS buf_ops to more sensible places, add bufstrategy to them.
Add inlines for bwrite() and bstrategy() which calls through buf->b_bufobj->b_ops->b_{write,strategy}().
Replace almost all VOP_STRATEGY()/VOP_SPECSTRATEGY() calls with bstrategy().
show more ...
|
Revision tags: release/4.10.0_cvs, release/4.10.0 |
|
#
41f1b2c4 |
| 08-Apr-2004 |
Alan Cox <alc@FreeBSD.org> |
The demise of vm_pager_map_page() in revision 1.93 of vm/vm_pager.c permits the reduction of the pager map's size by 8M bytes. In other words, eight megabytes of largely wasted KVA are returned to t
The demise of vm_pager_map_page() in revision 1.93 of vm/vm_pager.c permits the reduction of the pager map's size by 8M bytes. In other words, eight megabytes of largely wasted KVA are returned to the kernel map for use elsewhere.
show more ...
|
#
05eb3785 |
| 06-Apr-2004 |
Warner Losh <imp@FreeBSD.org> |
Remove advertising clause from University of California Regent's license, per letter dated July 22, 1999.
Approved by: core
|
#
9e0ddbd0 |
| 06-Apr-2004 |
Alan Cox <alc@FreeBSD.org> |
Eliminate vm_pager_map_page() and vm_pager_unmap_page() and their uses. Use sf_buf_alloc() and sf_buf_free() instead.
|
Revision tags: release/5.2.1_cvs, release/5.2.1, release/5.2.0_cvs, release/5.2.0, release/4.9.0_cvs, release/4.9.0 |
|
#
3ad8097f |
| 20-Oct-2003 |
Alan Cox <alc@FreeBSD.org> |
- Remove comments referring to functions that no longer exist.
|
#
4e658600 |
| 05-Aug-2003 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Use sparse struct initializations for struct pagerops.
This makes grepping for which pagers implement which methods easier.
|
#
98137162 |
| 04-Aug-2003 |
Alan Cox <alc@FreeBSD.org> |
Use kmem_alloc_nofault() instead of kmem_alloc_pageable() to allocate swapbkva. Swapbkva mappings are explicitly managed using pmap_qenter(), not on-demand by vm_fault(), making kmem_alloc_nofault()
Use kmem_alloc_nofault() instead of kmem_alloc_pageable() to allocate swapbkva. Swapbkva mappings are explicitly managed using pmap_qenter(), not on-demand by vm_fault(), making kmem_alloc_nofault() more appropriate.
Submitted by: tegge
show more ...
|
#
745f3305 |
| 03-Aug-2003 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Move extern declaration of the various pagerops from vm_pager.c to vm_pager.h where the various pagers will also see them.
|
#
adece6e5 |
| 20-Jun-2003 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Initialize b_saveaddr when we hand out pbufs
|