Use g_wither_provider() where applicable.
It is just a helper function combining G_PF_WITHER setting with g_orphan_provider().
This commit is contained in:
parent
aa93b99aa0
commit
8b64f3ca6c
@ -85,7 +85,7 @@ g_bde_orphan(struct g_consumer *cp)
|
||||
sc = gp->softc;
|
||||
gp->flags |= G_GEOM_WITHER;
|
||||
LIST_FOREACH(pp, &gp->provider, provider)
|
||||
g_orphan_provider(pp, ENXIO);
|
||||
g_wither_provider(pp, ENXIO);
|
||||
bzero(sc, sizeof(struct g_bde_softc)); /* destroy evidence */
|
||||
return;
|
||||
}
|
||||
|
@ -129,10 +129,9 @@ g_concat_remove_disk(struct g_concat_disk *disk)
|
||||
}
|
||||
|
||||
if (sc->sc_provider != NULL) {
|
||||
sc->sc_provider->flags |= G_PF_WITHER;
|
||||
G_CONCAT_DEBUG(0, "Device %s deactivated.",
|
||||
sc->sc_provider->name);
|
||||
g_orphan_provider(sc->sc_provider, ENXIO);
|
||||
g_wither_provider(sc->sc_provider, ENXIO);
|
||||
sc->sc_provider = NULL;
|
||||
}
|
||||
|
||||
|
@ -109,8 +109,7 @@ g_gate_destroy(struct g_gate_softc *sc, boolean_t force)
|
||||
wakeup(sc);
|
||||
mtx_unlock(&sc->sc_queue_mtx);
|
||||
gp = pp->geom;
|
||||
pp->flags |= G_PF_WITHER;
|
||||
g_orphan_provider(pp, ENXIO);
|
||||
g_wither_provider(pp, ENXIO);
|
||||
callout_drain(&sc->sc_callout);
|
||||
bioq_init(&queue);
|
||||
mtx_lock(&sc->sc_queue_mtx);
|
||||
|
@ -2462,8 +2462,7 @@ g_journal_destroy(struct g_journal_softc *sc)
|
||||
GJ_DEBUG(1, "Marking %s as clean.", sc->sc_name);
|
||||
g_journal_metadata_update(sc);
|
||||
g_topology_lock();
|
||||
pp->flags |= G_PF_WITHER;
|
||||
g_orphan_provider(pp, ENXIO);
|
||||
g_wither_provider(pp, ENXIO);
|
||||
} else {
|
||||
g_topology_lock();
|
||||
}
|
||||
|
@ -333,7 +333,7 @@ g_llvm_remove_disk(struct g_llvm_vg *vg, struct g_consumer *cp)
|
||||
if (found) {
|
||||
G_LLVM_DEBUG(0, "Device %s removed.",
|
||||
lv->lv_gprov->name);
|
||||
g_orphan_provider(lv->lv_gprov, ENXIO);
|
||||
g_wither_provider(lv->lv_gprov, ENXIO);
|
||||
lv->lv_gprov = NULL;
|
||||
}
|
||||
}
|
||||
|
@ -2154,10 +2154,9 @@ g_mirror_destroy_provider(struct g_mirror_softc *sc)
|
||||
mtx_unlock(&sc->sc_queue_mtx);
|
||||
G_MIRROR_DEBUG(0, "Device %s: provider %s destroyed.", sc->sc_name,
|
||||
sc->sc_provider->name);
|
||||
sc->sc_provider->flags |= G_PF_WITHER;
|
||||
g_orphan_provider(sc->sc_provider, ENXIO);
|
||||
g_topology_unlock();
|
||||
g_wither_provider(sc->sc_provider, ENXIO);
|
||||
sc->sc_provider = NULL;
|
||||
g_topology_unlock();
|
||||
LIST_FOREACH(disk, &sc->sc_disks, d_next) {
|
||||
if (disk->d_state == G_MIRROR_DISK_STATE_SYNCHRONIZING)
|
||||
g_mirror_sync_stop(disk, 1);
|
||||
|
@ -327,7 +327,7 @@ g_mountver_destroy(struct g_geom *gp, boolean_t force)
|
||||
G_MOUNTVER_DEBUG(0, "Device %s removed.", gp->name);
|
||||
}
|
||||
if (pp != NULL)
|
||||
g_orphan_provider(pp, ENXIO);
|
||||
g_wither_provider(pp, ENXIO);
|
||||
g_mountver_discard_queued(gp);
|
||||
g_free(sc->sc_provider_name);
|
||||
g_free(gp->softc);
|
||||
|
@ -2368,8 +2368,7 @@ g_raid3_destroy_provider(struct g_raid3_softc *sc)
|
||||
mtx_unlock(&sc->sc_queue_mtx);
|
||||
G_RAID3_DEBUG(0, "Device %s: provider %s destroyed.", sc->sc_name,
|
||||
sc->sc_provider->name);
|
||||
sc->sc_provider->flags |= G_PF_WITHER;
|
||||
g_orphan_provider(sc->sc_provider, ENXIO);
|
||||
g_wither_provider(sc->sc_provider, ENXIO);
|
||||
g_topology_unlock();
|
||||
sc->sc_provider = NULL;
|
||||
if (sc->sc_syncdisk != NULL)
|
||||
|
@ -156,7 +156,7 @@ g_shsec_remove_disk(struct g_consumer *cp)
|
||||
|
||||
sc->sc_disks[no] = NULL;
|
||||
if (sc->sc_provider != NULL) {
|
||||
g_orphan_provider(sc->sc_provider, ENXIO);
|
||||
g_wither_provider(sc->sc_provider, ENXIO);
|
||||
sc->sc_provider = NULL;
|
||||
G_SHSEC_DEBUG(0, "Device %s removed.", sc->sc_name);
|
||||
}
|
||||
|
@ -171,10 +171,9 @@ g_stripe_remove_disk(struct g_consumer *cp)
|
||||
}
|
||||
|
||||
if (sc->sc_provider != NULL) {
|
||||
sc->sc_provider->flags |= G_PF_WITHER;
|
||||
G_STRIPE_DEBUG(0, "Device %s deactivated.",
|
||||
sc->sc_provider->name);
|
||||
g_orphan_provider(sc->sc_provider, ENXIO);
|
||||
g_wither_provider(sc->sc_provider, ENXIO);
|
||||
sc->sc_provider = NULL;
|
||||
}
|
||||
|
||||
|
@ -223,8 +223,7 @@ gv_rm_vol(struct gv_softc *sc, struct gv_volume *v)
|
||||
/* Get rid of the volume's provider. */
|
||||
if (pp != NULL) {
|
||||
g_topology_lock();
|
||||
pp->flags |= G_PF_WITHER;
|
||||
g_orphan_provider(pp, ENXIO);
|
||||
g_wither_provider(pp, ENXIO);
|
||||
g_topology_unlock();
|
||||
}
|
||||
}
|
||||
|
@ -900,11 +900,9 @@ remove_component(struct g_virstor_softc *sc, struct g_virstor_component *comp,
|
||||
LOG_MSG(LVL_DEBUG, "Component %s removed from %s", c->provider->name,
|
||||
sc->geom->name);
|
||||
if (sc->provider != NULL) {
|
||||
/* Whither, GEOM? */
|
||||
sc->provider->flags |= G_PF_WITHER;
|
||||
g_orphan_provider(sc->provider, ENXIO);
|
||||
LOG_MSG(LVL_INFO, "Removing provider %s", sc->provider->name);
|
||||
g_wither_provider(sc->provider, ENXIO);
|
||||
sc->provider = NULL;
|
||||
LOG_MSG(LVL_INFO, "Removing provider %s", sc->geom->name);
|
||||
}
|
||||
|
||||
if (c->acr > 0 || c->acw > 0 || c->ace > 0)
|
||||
|
Loading…
x
Reference in New Issue
Block a user