diff options
author | trasz <trasz@FreeBSD.org> | 2010-12-02 17:37:16 +0000 |
---|---|---|
committer | trasz <trasz@FreeBSD.org> | 2010-12-02 17:37:16 +0000 |
commit | e5fb69509c12904dfc9fb137ed1dbcafc2e86e29 (patch) | |
tree | ea2ce0208bf11af89bb5734c7f42ac4669677e31 /sys/vm/swap_pager.c | |
parent | 789892d7ed5efe3e04bd964f26650d2043686819 (diff) | |
download | FreeBSD-src-e5fb69509c12904dfc9fb137ed1dbcafc2e86e29.zip FreeBSD-src-e5fb69509c12904dfc9fb137ed1dbcafc2e86e29.tar.gz |
Replace pointer to "struct uidinfo" with pointer to "struct ucred"
in "struct vm_object". This is required to make it possible to account
for per-jail swap usage.
Reviewed by: kib@
Tested by: pho@
Sponsored by: FreeBSD Foundation
Diffstat (limited to 'sys/vm/swap_pager.c')
-rw-r--r-- | sys/vm/swap_pager.c | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/sys/vm/swap_pager.c b/sys/vm/swap_pager.c index bea235a..35a6df5 100644 --- a/sys/vm/swap_pager.c +++ b/sys/vm/swap_pager.c @@ -174,16 +174,19 @@ int swap_reserve(vm_ooffset_t incr) { - return (swap_reserve_by_uid(incr, curthread->td_ucred->cr_ruidinfo)); + return (swap_reserve_by_cred(incr, curthread->td_ucred)); } int -swap_reserve_by_uid(vm_ooffset_t incr, struct uidinfo *uip) +swap_reserve_by_cred(vm_ooffset_t incr, struct ucred *cred) { vm_ooffset_t r, s; int res, error; static int curfail; static struct timeval lastfail; + struct uidinfo *uip; + + uip = cred->cr_ruidinfo; if (incr & PAGE_MASK) panic("swap_reserve: & PAGE_MASK"); @@ -249,17 +252,20 @@ swap_reserve_force(vm_ooffset_t incr) void swap_release(vm_ooffset_t decr) { - struct uidinfo *uip; + struct ucred *cred; PROC_LOCK(curproc); - uip = curthread->td_ucred->cr_ruidinfo; - swap_release_by_uid(decr, uip); + cred = curthread->td_ucred; + swap_release_by_cred(decr, cred); PROC_UNLOCK(curproc); } void -swap_release_by_uid(vm_ooffset_t decr, struct uidinfo *uip) +swap_release_by_cred(vm_ooffset_t decr, struct ucred *cred) { + struct uidinfo *uip; + + uip = cred->cr_ruidinfo; if (decr & PAGE_MASK) panic("swap_release: & PAGE_MASK"); @@ -579,9 +585,7 @@ swap_pager_alloc(void *handle, vm_ooffset_t size, vm_prot_t prot, { vm_object_t object; vm_pindex_t pindex; - struct uidinfo *uip; - uip = NULL; pindex = OFF_TO_IDX(offset + PAGE_MASK + size); if (handle) { mtx_lock(&Giant); @@ -595,19 +599,18 @@ swap_pager_alloc(void *handle, vm_ooffset_t size, vm_prot_t prot, object = vm_pager_object_lookup(NOBJLIST(handle), handle); if (object == NULL) { if (cred != NULL) { - uip = cred->cr_ruidinfo; - if (!swap_reserve_by_uid(size, uip)) { + if (!swap_reserve_by_cred(size, cred)) { sx_xunlock(&sw_alloc_sx); mtx_unlock(&Giant); return (NULL); } - uihold(uip); + crhold(cred); } object = vm_object_allocate(OBJT_DEFAULT, pindex); VM_OBJECT_LOCK(object); object->handle = handle; if (cred != NULL) { - object->uip = uip; + object->cred = cred; object->charge = size; } swp_pager_meta_build(object, 0, SWAPBLK_NONE); @@ -617,15 +620,14 @@ swap_pager_alloc(void *handle, vm_ooffset_t size, vm_prot_t prot, mtx_unlock(&Giant); } else { if (cred != NULL) { - uip = cred->cr_ruidinfo; - if (!swap_reserve_by_uid(size, uip)) + if (!swap_reserve_by_cred(size, cred)) return (NULL); - uihold(uip); + crhold(cred); } object = vm_object_allocate(OBJT_DEFAULT, pindex); VM_OBJECT_LOCK(object); if (cred != NULL) { - object->uip = uip; + object->cred = cred; object->charge = size; } swp_pager_meta_build(object, 0, SWAPBLK_NONE); |