diff options
author | kib <kib@FreeBSD.org> | 2014-07-28 01:21:02 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2014-07-28 01:21:02 +0000 |
commit | 20a66511817c069bc8532bba59681731e3bdb85f (patch) | |
tree | 2e35e35c0770db0783c109e26ca7c4c228dd0612 /sys/vm/vm_object.c | |
parent | d2764792a74c6d5fbdff0f50856cc3130afc40da (diff) | |
download | FreeBSD-src-20a66511817c069bc8532bba59681731e3bdb85f.zip FreeBSD-src-20a66511817c069bc8532bba59681731e3bdb85f.tar.gz |
MFC r268615:
Add OBJ_TMPFS_NODE flag.
MFC r268616:
Set the OBJ_TMPFS_NODE flag for vm_object of VREG tmpfs node.
MFC r269053:
Correct assertion. tmpfs vm object is always at the bottom of
the shadow chain.
Diffstat (limited to 'sys/vm/vm_object.c')
-rw-r--r-- | sys/vm/vm_object.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c index f5c9cbe..6cfb0d4 100644 --- a/sys/vm/vm_object.c +++ b/sys/vm/vm_object.c @@ -553,14 +553,12 @@ vm_object_deallocate(vm_object_t object) object->handle == NULL && (object->type == OBJT_DEFAULT || (object->type == OBJT_SWAP && - (object->flags & OBJ_TMPFS) == 0))) { + (object->flags & OBJ_TMPFS_NODE) == 0))) { vm_object_set_flag(object, OBJ_ONEMAPPING); } else if ((object->shadow_count == 1) && (object->handle == NULL) && (object->type == OBJT_DEFAULT || object->type == OBJT_SWAP)) { - KASSERT((object->flags & OBJ_TMPFS) == 0, - ("shadowed tmpfs v_object %p", object)); vm_object_t robject; robject = LIST_FIRST(&object->shadow_head); @@ -568,6 +566,8 @@ vm_object_deallocate(vm_object_t object) ("vm_object_deallocate: ref_count: %d, shadow_count: %d", object->ref_count, object->shadow_count)); + KASSERT((robject->flags & OBJ_TMPFS_NODE) == 0, + ("shadowed tmpfs v_object %p", object)); if (!VM_OBJECT_TRYWLOCK(robject)) { /* * Avoid a potential deadlock. @@ -637,6 +637,8 @@ retry: doterm: temp = object->backing_object; if (temp != NULL) { + KASSERT((object->flags & OBJ_TMPFS_NODE) == 0, + ("shadowed tmpfs v_object 2 %p", object)); VM_OBJECT_WLOCK(temp); LIST_REMOVE(object, shadow_list); temp->shadow_count--; @@ -2104,7 +2106,7 @@ vm_object_coalesce(vm_object_t prev_object, vm_ooffset_t prev_offset, VM_OBJECT_WLOCK(prev_object); if ((prev_object->type != OBJT_DEFAULT && prev_object->type != OBJT_SWAP) || - (prev_object->flags & OBJ_TMPFS) != 0) { + (prev_object->flags & OBJ_TMPFS_NODE) != 0) { VM_OBJECT_WUNLOCK(prev_object); return (FALSE); } |