summaryrefslogtreecommitdiffstats
path: root/sys/vm/vm_map.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/vm/vm_map.c')
-rw-r--r--sys/vm/vm_map.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c
index 6484a9f..a180601 100644
--- a/sys/vm/vm_map.c
+++ b/sys/vm/vm_map.c
@@ -2591,6 +2591,7 @@ vm_map_sync(
vm_object_t object;
vm_ooffset_t offset;
unsigned int last_timestamp;
+ boolean_t failed;
vm_map_lock_read(map);
VM_MAP_RANGE_CHECK(map, start, end);
@@ -2620,6 +2621,7 @@ vm_map_sync(
if (invalidate)
pmap_remove(map->pmap, start, end);
+ failed = FALSE;
/*
* Make a second pass, cleaning/uncaching pages from the indicated
@@ -2648,7 +2650,8 @@ vm_map_sync(
vm_object_reference(object);
last_timestamp = map->timestamp;
vm_map_unlock_read(map);
- vm_object_sync(object, offset, size, syncio, invalidate);
+ if (!vm_object_sync(object, offset, size, syncio, invalidate))
+ failed = TRUE;
start += size;
vm_object_deallocate(object);
vm_map_lock_read(map);
@@ -2658,7 +2661,7 @@ vm_map_sync(
}
vm_map_unlock_read(map);
- return (KERN_SUCCESS);
+ return (failed ? KERN_FAILURE : KERN_SUCCESS);
}
/*
OpenPOWER on IntegriCloud