summaryrefslogtreecommitdiffstats
path: root/sys/geom
diff options
context:
space:
mode:
authorae <ae@FreeBSD.org>2010-08-02 10:26:15 +0000
committerae <ae@FreeBSD.org>2010-08-02 10:26:15 +0000
commite9c305133c36b9fa74c67a3e5dcb9ee225d73d9b (patch)
treeb925531cf6c2bbec20f129d5095d2e4a16d09e09 /sys/geom
parent2f1480605ce75a6f347918c2df611a8f628bc3d5 (diff)
downloadFreeBSD-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')
-rw-r--r--sys/geom/part/g_part.c4
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);
}
OpenPOWER on IntegriCloud