summaryrefslogtreecommitdiffstats
path: root/sys/geom
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2013-01-17 03:27:08 +0000
committermav <mav@FreeBSD.org>2013-01-17 03:27:08 +0000
commit28491a8c651aa8aa23c766de5199de58b1e0cfda (patch)
tree56968d275d6f7aaed71087ec537de3c757f1d4b7 /sys/geom
parenta3df209122b2ceae76b630efea1a4d277793a540 (diff)
downloadFreeBSD-src-28491a8c651aa8aa23c766de5199de58b1e0cfda.zip
FreeBSD-src-28491a8c651aa8aa23c766de5199de58b1e0cfda.tar.gz
- Fix rebuild position broken at r245522.
- Identify one more metadata field.
Diffstat (limited to 'sys/geom')
-rw-r--r--sys/geom/raid/md_promise.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/geom/raid/md_promise.c b/sys/geom/raid/md_promise.c
index bbab827..0007b20 100644
--- a/sys/geom/raid/md_promise.c
+++ b/sys/geom/raid/md_promise.c
@@ -126,7 +126,8 @@ struct promise_raid_conf {
uint8_t magic_6;
uint8_t sector_size;
uint16_t magic_7;
- uint32_t magic_8[32];
+ uint32_t magic_8[31];
+ uint32_t backup_time;
uint16_t magic_9;
uint32_t disk_offset_high;
uint32_t disk_sectors_high;
@@ -228,6 +229,7 @@ g_raid_md_promise_print(struct promise_raid_conf *meta)
printf("magic_5 0x%08x\n", meta->magic_5);
printf("total_sectors_high 0x%08x\n", meta->total_sectors_high);
printf("sector_size %u\n", meta->sector_size);
+ printf("backup_time %d\n", meta->backup_time);
printf("disk_offset_high 0x%08x\n", meta->disk_offset_high);
printf("disk_sectors_high 0x%08x\n", meta->disk_sectors_high);
printf("disk_rebuild_high 0x%08x\n", meta->disk_rebuild_high);
@@ -398,6 +400,7 @@ next:
meta->disk_rebuild_high = 0;
if (meta->total_sectors_high == 0x15161718) {
meta->total_sectors_high = 0;
+ meta->backup_time = 0;
if (meta->rebuild_lba64 == 0x2122232425262728)
meta->rebuild_lba64 = UINT64_MAX;
}
@@ -793,7 +796,7 @@ nofit:
sd->sd_rebuild_pos = 0;
else {
sd->sd_rebuild_pos =
- (((off_t)pd->pd_meta[sdn]->disk_rebuild << 32) +
+ (((off_t)pd->pd_meta[sdn]->disk_rebuild_high << 32) +
pd->pd_meta[sdn]->disk_rebuild) * 512;
}
} else if (!(meta->disks[md_disk_pos].flags & PROMISE_F_ONLINE)) {
OpenPOWER on IntegriCloud