diff options
| author | Matthew N. Dodd <mdodd@FreeBSD.org> | 2002-09-22 08:22:32 +0000 |
|---|---|---|
| committer | Matthew N. Dodd <mdodd@FreeBSD.org> | 2002-09-22 08:22:32 +0000 |
| commit | 4a2eca23cad9d40a1fada75edcfa78e2cbb3c34f (patch) | |
| tree | 31a63d92b0c80a622b84d31ed55878ddfd210d06 /sys | |
| parent | 1302dabd28a369708901ba5eb79d0646cc544644 (diff) | |
Notes
Diffstat (limited to 'sys')
| -rw-r--r-- | sys/vm/vm_map.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c index 386acbcccb681..f28271dc29be1 100644 --- a/sys/vm/vm_map.c +++ b/sys/vm/vm_map.c @@ -1920,16 +1920,19 @@ vm_map_clean( OFF_TO_IDX(offset), OFF_TO_IDX(offset + size + PAGE_MASK), flags); - if (invalidate) { - /*vm_object_pip_wait(object, "objmcl");*/ - vm_object_page_remove(object, - OFF_TO_IDX(offset), - OFF_TO_IDX(offset + size + PAGE_MASK), - FALSE); - } VOP_UNLOCK(object->handle, 0, curthread); vm_object_deallocate(object); } + if (object && invalidate && + ((object->type == OBJT_VNODE) || + (object->type == OBJT_DEVICE))) { + vm_object_reference(object); + vm_object_page_remove(object, + OFF_TO_IDX(offset), + OFF_TO_IDX(offset + size + PAGE_MASK), + FALSE); + vm_object_deallocate(object); + } start += size; } |
