summaryrefslogtreecommitdiffstats
path: root/sys/vm/vm_object.c
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2014-07-28 01:21:02 +0000
committerkib <kib@FreeBSD.org>2014-07-28 01:21:02 +0000
commit20a66511817c069bc8532bba59681731e3bdb85f (patch)
tree2e35e35c0770db0783c109e26ca7c4c228dd0612 /sys/vm/vm_object.c
parentd2764792a74c6d5fbdff0f50856cc3130afc40da (diff)
downloadFreeBSD-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.c10
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);
}
OpenPOWER on IntegriCloud