Changeset View
Changeset View
Standalone View
Standalone View
head/sys/geom/raid/md_promise.c
Show First 20 Lines • Show All 1,094 Lines • ▼ Show 20 Lines | |||||
static int | static int | ||||
g_raid_md_taste_promise(struct g_raid_md_object *md, struct g_class *mp, | g_raid_md_taste_promise(struct g_raid_md_object *md, struct g_class *mp, | ||||
struct g_consumer *cp, struct g_geom **gp) | struct g_consumer *cp, struct g_geom **gp) | ||||
{ | { | ||||
struct g_consumer *rcp; | struct g_consumer *rcp; | ||||
struct g_provider *pp; | struct g_provider *pp; | ||||
struct g_raid_softc *sc; | struct g_raid_softc *sc; | ||||
struct g_raid_disk *disk; | struct g_raid_disk *disk; | ||||
struct promise_raid_conf *meta, *metaarr[4]; | struct promise_raid_conf *metaarr[4]; | ||||
struct g_raid_md_promise_perdisk *pd; | struct g_raid_md_promise_perdisk *pd; | ||||
struct g_geom *geom; | struct g_geom *geom; | ||||
int i, j, result, len, subdisks; | int i, j, result, len, subdisks; | ||||
char name[16]; | char name[16]; | ||||
uint16_t vendor; | uint16_t vendor; | ||||
G_RAID_DEBUG(1, "Tasting Promise on %s", cp->provider->name); | G_RAID_DEBUG(1, "Tasting Promise on %s", cp->provider->name); | ||||
pp = cp->provider; | pp = cp->provider; | ||||
/* Read metadata from device. */ | /* Read metadata from device. */ | ||||
meta = NULL; | |||||
g_topology_unlock(); | g_topology_unlock(); | ||||
vendor = 0xffff; | vendor = 0xffff; | ||||
len = sizeof(vendor); | len = sizeof(vendor); | ||||
if (pp->geom->rank == 1) | if (pp->geom->rank == 1) | ||||
g_io_getattr("GEOM::hba_vendor", cp, &len, &vendor); | g_io_getattr("GEOM::hba_vendor", cp, &len, &vendor); | ||||
subdisks = promise_meta_read(cp, metaarr); | subdisks = promise_meta_read(cp, metaarr); | ||||
g_topology_lock(); | g_topology_lock(); | ||||
if (subdisks == 0) { | if (subdisks == 0) { | ||||
▲ Show 20 Lines • Show All 886 Lines • Show Last 20 Lines |