Changeset View
Changeset View
Standalone View
Standalone View
sys/geom/part/g_part_ldm.c
Show First 20 Lines • Show All 1,014 Lines • ▼ Show 20 Lines | ldm_vmdb_parse(struct ldm_db *db, struct g_consumer *cp) | ||||
u_char *buf, *p; | u_char *buf, *p; | ||||
size_t size, n, sectors; | size_t size, n, sectors; | ||||
uint64_t offset; | uint64_t offset; | ||||
int error; | int error; | ||||
pp = cp->provider; | pp = cp->provider; | ||||
size = howmany(db->dh.last_seq * db->dh.size, pp->sectorsize); | size = howmany(db->dh.last_seq * db->dh.size, pp->sectorsize); | ||||
size -= 1; /* one sector takes vmdb header */ | size -= 1; /* one sector takes vmdb header */ | ||||
for (n = 0; n < size; n += MAXPHYS / pp->sectorsize) { | for (n = 0; n < size; n += maxphys / pp->sectorsize) { | ||||
offset = db->ph.db_offset + db->th.conf_offset + n + 1; | offset = db->ph.db_offset + db->th.conf_offset + n + 1; | ||||
sectors = (size - n) > (MAXPHYS / pp->sectorsize) ? | sectors = (size - n) > (maxphys / pp->sectorsize) ? | ||||
MAXPHYS / pp->sectorsize: size - n; | maxphys / pp->sectorsize : size - n; | ||||
/* read VBLKs */ | /* read VBLKs */ | ||||
buf = g_read_data(cp, offset * pp->sectorsize, | buf = g_read_data(cp, offset * pp->sectorsize, | ||||
sectors * pp->sectorsize, &error); | sectors * pp->sectorsize, &error); | ||||
if (buf == NULL) { | if (buf == NULL) { | ||||
LDM_DEBUG(0, "%s: failed to read VBLK\n", | LDM_DEBUG(0, "%s: failed to read VBLK\n", | ||||
pp->name); | pp->name); | ||||
goto fail; | goto fail; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 452 Lines • Show Last 20 Lines |