Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 17 Apr 2019 03:53:56 +0000
From:      bugzilla-noreply@freebsd.org
To:        geom@FreeBSD.org
Subject:   [Bug 237269] panic in glabel (g_label_destroy) stop after resizing GPT partition
Message-ID:  <bug-237269-14739-cbEtgd1MFe@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-237269-14739@https.bugs.freebsd.org/bugzilla/>
References:  <bug-237269-14739@https.bugs.freebsd.org/bugzilla/>

next in thread | previous in thread | raw e-mail | index | archive | help

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=237269

--- Comment #7 from andrew@tao11.riddles.org.uk ---
I think I have identified the sequence of events:

1. When we resize the partition, it spoils the attached LABEL consumers
(correctly, I think, since those might depend on the partition size);

2. The spoiled LABELs are orphaned, orphaning the DEV geoms that are their sole
consumers;

3. the DEV geoms destruct, detaching from the LABELs and removing the /dev
entries;

4. BEFORE anything significant can happen, DEV re-tastes the now-orphaned LABEL
geoms, getting an ENXIO from trying to open them, but for whatever reason
attaches to them anyway, creating new /dev entries and attaching new consumers
to the orphan LABELs;

5. Since the old LABELs now have attached consumers that aren't going to die,
the withering process never completes, and the /dev entries remain attached to
the orphaned LABEL geoms that now have no partition under them;

6. When DEV gets to taste the new providers for the new LABEL geoms for the
resized partitions, it can't create the /dev entries for them because they
already exist.

You'd think that step 4 wouldn't happen because a withering geom shouldn't be
offered for tasting, but it turns out there's a code path where this happens:
and strangely enough it's in g_resize_provider_event.

So there are several places here where questionable things are happening, even
beyond the assumption that actually causes the crash (LABEL's assumption that
it always has a consumer).

-- 
You are receiving this mail because:
You are the assignee for the bug.


Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-237269-14739-cbEtgd1MFe>