Dateisystem-Typ direkt ermitteln statt aus der udev-Datenbank
Auf dem Testhost (Ceph RBD) meldete lsblk fuer jede Partition eines
eingebundenen Snapshots "kein Dateisystem" - auch fuer eine 31,5-GB-
Partition, auf der offensichtlich ext4 liegt. Nichts liess sich einhaengen.
Grund: lsblk nimmt FSTYPE aus der udev-Datenbank, und die ist bei frisch
gemappten rbd-Geraeten leer, weil udev dort keine blkid-Probe faehrt. Ein
direktes "blkid -p" auf denselben Geraeten liefert dagegen sauber vfat und
ext4. Der Typ wird jetzt so ermittelt, wenn lsblk nichts weiss.
Ausserdem: die Auswahl der Dateisysteme zeigte nur abgeschnittene
Mountpfade, die sich alle glichen, und vorausgewaehlt war das erste
gefundene - in der Praxis gern die 200-MB-EFI-Partition. Jetzt stehen dort
Geraet, Typ, Groesse und ein Hinweis ("Linux-Wurzelverzeichnis",
"Startpartition"), und die wahrscheinlichste Wurzel steht oben.
Auf pvetest01 gegen echte Snapshots geprueft: einbinden, alle drei
Dateisysteme mounten, Explorer, Web-Oberflaeche mit Download und ZIP,
Ausbruchversuch abgewiesen, restloses Aufraeumen auch nach hartem Abbruch.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
da08a81aab
commit
700492391a
+6
-9
@@ -649,9 +649,7 @@ class Explorer:
|
||||
if not self.session or len(self.session.mounts) < 2:
|
||||
message(win, "Es ist nur ein Dateisystem eingebunden.")
|
||||
return
|
||||
entries = []
|
||||
for device, mountpoint in sorted(self.session.mounts.items()):
|
||||
entries.append((mountpoint, "%s -> %s" % (device, mountpoint)))
|
||||
entries = self.session.mount_entries()
|
||||
chosen = choose(win, "Welches Dateisystem?", entries)
|
||||
if chosen:
|
||||
self.panes[0].root = chosen
|
||||
@@ -857,16 +855,15 @@ def _main(stdscr, args):
|
||||
|
||||
try:
|
||||
_show_notes(stdscr, session.notes)
|
||||
mountpoints = sorted(set(session.mounts.values()))
|
||||
if not mountpoints:
|
||||
entries = session.mount_entries()
|
||||
if not entries:
|
||||
_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]
|
||||
start = choose(stdscr, "Welches Dateisystem zuerst?", entries) or mountpoints[0]
|
||||
start = entries[0][0]
|
||||
if len(entries) > 1:
|
||||
start = choose(stdscr, "Welches Dateisystem zuerst?", entries) or start
|
||||
|
||||
left = Pane(path=start, root=start, readonly=True,
|
||||
title="%s @ %s" % (guest.label, name))
|
||||
|
||||
Reference in New Issue
Block a user