summaryrefslogtreecommitdiffstats
path: root/sys/kern/subr_hibernate.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern/subr_hibernate.c')
-rw-r--r--sys/kern/subr_hibernate.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/sys/kern/subr_hibernate.c b/sys/kern/subr_hibernate.c
index 28a60cd51e3..4e3dfcba006 100644
--- a/sys/kern/subr_hibernate.c
+++ b/sys/kern/subr_hibernate.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: subr_hibernate.c,v 1.78 2013/11/06 19:53:08 deraadt Exp $ */
+/* $OpenBSD: subr_hibernate.c,v 1.79 2013/11/09 04:38:42 deraadt Exp $ */
/*
* Copyright (c) 2011 Ariane van der Steldt <ariane@stack.nl>
@@ -943,14 +943,10 @@ hibernate_write_chunktable(union hibernate_info *hib)
struct hibernate_disk_chunk *chunks;
vaddr_t hibernate_chunk_table_start;
size_t hibernate_chunk_table_size;
- daddr_t chunkbase;
int i, err;
hibernate_chunk_table_size = HIBERNATE_CHUNK_TABLE_SIZE;
- chunkbase = hib->sig_offset -
- (hibernate_chunk_table_size / DEV_BSIZE);
-
hibernate_chunk_table_start = hib->piglet_va +
HIBERNATE_CHUNK_SIZE;
@@ -960,7 +956,7 @@ hibernate_write_chunktable(union hibernate_info *hib)
/* Write chunk table */
for (i = 0; i < hibernate_chunk_table_size; i += MAXPHYS) {
if ((err = hib->io_func(hib->dev,
- chunkbase + (i/DEV_BSIZE),
+ hib->chunktable_offset + (i/DEV_BSIZE),
(vaddr_t)(hibernate_chunk_table_start + i),
MAXPHYS, HIB_W, hib->io_page))) {
DPRINTF("chunktable write error: %d\n", err);
@@ -1549,6 +1545,7 @@ hibernate_write_chunks(union hibernate_info *hib)
chunks[i].offset) * DEV_BSIZE;
}
+ hib->chunktable_offset = hib->image_offset + blkctr;
return (0);
}
@@ -1622,7 +1619,7 @@ hibernate_read_image(union hibernate_info *hib)
/* Calculate total chunk table size in disk blocks */
chunktable_size = HIBERNATE_CHUNK_TABLE_SIZE / DEV_BSIZE;
- blkctr = hib->sig_offset - chunktable_size;
+ blkctr = hib->chunktable_offset;
chunktable = (vaddr_t)km_alloc(HIBERNATE_CHUNK_TABLE_SIZE, &kv_any,
&kp_none, &kd_nowait);