Allow to close access even if device is already destroyed.
Reported by: Ulrich Spoerlein <uspoerlein@gmail.com> PR: kern/98093 MFC after: 1 week
This commit is contained in:
parent
8a97c03a7a
commit
1f7fec3cb5
@ -2736,13 +2736,15 @@ g_mirror_access(struct g_provider *pp, int acr, int acw, int ace)
|
||||
G_MIRROR_DEBUG(2, "Access request for %s: r%dw%de%d.", pp->name, acr,
|
||||
acw, ace);
|
||||
|
||||
sc = pp->geom->softc;
|
||||
if (sc == NULL && acr <= 0 && acw <= 0 && ace <= 0)
|
||||
return (0);
|
||||
KASSERT(sc != NULL, ("NULL softc (provider=%s).", pp->name));
|
||||
|
||||
dcr = pp->acr + acr;
|
||||
dcw = pp->acw + acw;
|
||||
dce = pp->ace + ace;
|
||||
|
||||
sc = pp->geom->softc;
|
||||
KASSERT(sc != NULL, ("NULL softc (provider=%s).", pp->name));
|
||||
|
||||
g_topology_unlock();
|
||||
sx_xlock(&sc->sc_lock);
|
||||
if ((sc->sc_flags & G_MIRROR_DEVICE_FLAG_DESTROY) != 0 ||
|
||||
|
@ -2949,13 +2949,15 @@ g_raid3_access(struct g_provider *pp, int acr, int acw, int ace)
|
||||
G_RAID3_DEBUG(2, "Access request for %s: r%dw%de%d.", pp->name, acr,
|
||||
acw, ace);
|
||||
|
||||
sc = pp->geom->softc;
|
||||
if (sc == NULL && acr <= 0 && acw <= 0 && ace <= 0)
|
||||
return (0);
|
||||
KASSERT(sc != NULL, ("NULL softc (provider=%s).", pp->name));
|
||||
|
||||
dcr = pp->acr + acr;
|
||||
dcw = pp->acw + acw;
|
||||
dce = pp->ace + ace;
|
||||
|
||||
sc = pp->geom->softc;
|
||||
KASSERT(sc != NULL, ("NULL softc (provider=%s).", pp->name));
|
||||
|
||||
g_topology_unlock();
|
||||
sx_xlock(&sc->sc_lock);
|
||||
if ((sc->sc_flags & G_RAID3_DEVICE_FLAG_DESTROY) != 0 ||
|
||||
|
Loading…
Reference in New Issue
Block a user