diff options
author | ae <ae@FreeBSD.org> | 2010-08-02 10:26:15 +0000 |
---|---|---|
committer | ae <ae@FreeBSD.org> | 2010-08-02 10:26:15 +0000 |
commit | e9c305133c36b9fa74c67a3e5dcb9ee225d73d9b (patch) | |
tree | b925531cf6c2bbec20f129d5095d2e4a16d09e09 /sys/geom/part | |
parent | 2f1480605ce75a6f347918c2df611a8f628bc3d5 (diff) | |
download | FreeBSD-src-e9c305133c36b9fa74c67a3e5dcb9ee225d73d9b.zip FreeBSD-src-e9c305133c36b9fa74c67a3e5dcb9ee225d73d9b.tar.gz |
Release access for consumers that are opened, but will be destroyed
indirectly by orphan method.
PR: 148688
Silence from: marcel
Approved by: mav (mentor)
MFC after: 2 weeks
Diffstat (limited to 'sys/geom/part')
-rw-r--r-- | sys/geom/part/g_part.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/geom/part/g_part.c b/sys/geom/part/g_part.c index 98ec702..2129f39 100644 --- a/sys/geom/part/g_part.c +++ b/sys/geom/part/g_part.c @@ -1739,6 +1739,7 @@ static void g_part_orphan(struct g_consumer *cp) { struct g_provider *pp; + struct g_part_table *table; pp = cp->provider; KASSERT(pp != NULL, (__func__)); @@ -1746,6 +1747,9 @@ g_part_orphan(struct g_consumer *cp) g_topology_assert(); KASSERT(pp->error != 0, (__func__)); + table = cp->geom->softc; + if (table->gpt_opened) + g_access(cp, -1, -1, -1); g_part_wither(cp->geom, pp->error); } |