Explorer: Absturz beheben und LVM im Gast unterstuetzen

Beim Einbinden stuerzte der Explorer mit IndexError ab. Ursache: prepare()
meldete nur dann einen Fehler, wenn gar kein Geraet gefunden wurde - nicht
aber, wenn zwar Geraete da waren, sich davon aber keins einhaengen liess.
Der Aufrufer griff dann blind auf mountpoints[0] zu.

* prepare() meldet jetzt einen Fehler, sobald kein Dateisystem eingehaengt
  werden konnte, und nennt dabei die gefundenen Geraete samt Dateisystem-
  Typ - sonst raet man beim Suchen nur.
* Der Explorer prueft die Liste zusaetzlich selbst ab.

Der wahrscheinlichste Grund fuer "gefunden, aber nicht mountbar" ist LVM
im Gast: dahinter liegt zunaechst nur ein LVM2_member. Das wird jetzt
unterstuetzt - inklusive der heiklen Stelle: heisst die Volume-Group im
Gast genauso wie eine auf dem Host (typisch 'pve'), waere nicht mehr
eindeutig, welche gemeint ist. Erkannt wird das an gleichem Namen bei
unterschiedlicher UUID; dann wird bewusst nichts aktiviert und der Grund
angezeigt. Beim Aufraeumen wird die Gruppe vor dem Aushaengen des Geraets
wieder deaktiviert.

Ausserdem "udevadm settle" nach dem Einbinden - die Partitionsgeraete
tauchen sonst manchmal erst nach dem Scan auf.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
duffyduck
2026-07-31 09:35:22 +02:00
co-authored by Claude Opus 5
parent f37a942fea
commit da08a81aab
2 changed files with 95 additions and 4 deletions
+5
View File
@@ -858,6 +858,11 @@ def _main(stdscr, args):
try:
_show_notes(stdscr, session.notes)
mountpoints = sorted(set(session.mounts.values()))
if not mountpoints:
_show_notes(stdscr,
["Es wurde kein Dateisystem eingehaengt."] + session.notes,
"Nichts zu zeigen")
return 3
start = mountpoints[0]
if len(mountpoints) > 1:
entries = [(m, m) for m in mountpoints]