Page MenuHomeFreeBSD

D25329.diff
No OneTemporary

D25329.diff

Index: head/sys/dev/md/md.c
===================================================================
--- head/sys/dev/md/md.c
+++ head/sys/dev/md/md.c
@@ -1566,8 +1566,6 @@
if (newpages < oldpages) {
VM_OBJECT_WLOCK(sc->object);
vm_object_page_remove(sc->object, newpages, 0, 0);
- swap_pager_freespace(sc->object, newpages,
- oldpages - newpages);
swap_release_by_cred(IDX_TO_OFF(oldpages -
newpages), sc->cred);
sc->object->charge = IDX_TO_OFF(newpages);
Index: head/sys/fs/tmpfs/tmpfs_subr.c
===================================================================
--- head/sys/fs/tmpfs/tmpfs_subr.c
+++ head/sys/fs/tmpfs/tmpfs_subr.c
@@ -1517,11 +1517,8 @@
/*
* Release any swap space and free any whole pages.
*/
- if (newpages < oldpages) {
- swap_pager_freespace(uobj, newpages, oldpages -
- newpages);
+ if (newpages < oldpages)
vm_object_page_remove(uobj, newpages, 0, 0);
- }
}
uobj->size = newpages;
VM_OBJECT_WUNLOCK(uobj);
Index: head/sys/kern/uipc_shm.c
===================================================================
--- head/sys/kern/uipc_shm.c
+++ head/sys/kern/uipc_shm.c
@@ -540,14 +540,9 @@
}
delta = IDX_TO_OFF(object->size - nobjsize);
- /* Toss in memory pages. */
if (nobjsize < object->size)
vm_object_page_remove(object, nobjsize, object->size,
0);
-
- /* Toss pages from swap. */
- if (object->type == OBJT_SWAP)
- swap_pager_freespace(object, nobjsize, delta);
/* Free the swap accounted for shm */
swap_release_by_cred(delta, object->cred);
Index: head/sys/vm/vm_map.c
===================================================================
--- head/sys/vm/vm_map.c
+++ head/sys/vm/vm_map.c
@@ -3644,7 +3644,7 @@
vm_map_entry_delete(vm_map_t map, vm_map_entry_t entry)
{
vm_object_t object;
- vm_pindex_t offidxstart, offidxend, count, size1;
+ vm_pindex_t offidxstart, offidxend, size1;
vm_size_t size;
vm_map_entry_unlink(map, entry, UNLINK_MERGE_NONE);
@@ -3673,9 +3673,8 @@
KASSERT(entry->cred == NULL || object->cred == NULL ||
(entry->eflags & MAP_ENTRY_NEEDS_COPY),
("OVERCOMMIT vm_map_entry_delete: both cred %p", entry));
- count = atop(size);
offidxstart = OFF_TO_IDX(entry->offset);
- offidxend = offidxstart + count;
+ offidxend = offidxstart + atop(size);
VM_OBJECT_WLOCK(object);
if (object->ref_count != 1 &&
((object->flags & OBJ_ONEMAPPING) != 0 ||
@@ -3690,9 +3689,6 @@
*/
vm_object_page_remove(object, offidxstart, offidxend,
OBJPR_NOTMAPPED);
- if (object->type == OBJT_SWAP)
- swap_pager_freespace(object, offidxstart,
- count);
if (offidxend >= object->size &&
offidxstart < object->size) {
size1 = object->size;
Index: head/sys/vm/vm_object.c
===================================================================
--- head/sys/vm/vm_object.c
+++ head/sys/vm/vm_object.c
@@ -2121,6 +2121,12 @@
vm_page_free(p);
}
vm_object_pip_wakeup(object);
+
+ if (object->type == OBJT_SWAP) {
+ if (end == 0)
+ end = object->size;
+ swap_pager_freespace(object, start, end - start);
+ }
}
/*
@@ -2288,9 +2294,6 @@
if (next_pindex < prev_object->size) {
vm_object_page_remove(prev_object, next_pindex, next_pindex +
next_size, 0);
- if (prev_object->type == OBJT_SWAP)
- swap_pager_freespace(prev_object,
- next_pindex, next_size);
#if 0
if (prev_object->cred != NULL) {
KASSERT(prev_object->charge >=

File Metadata

Mime Type
text/plain
Expires
Fri, Feb 14, 4:17 AM (20 h, 4 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16637368
Default Alt Text
D25329.diff (3 KB)

Event Timeline