Erstellt vor 9 Tagen

Geschlossen vor 5 Tagen

#2906 closed defect (fixed)

Fehler in libmodmount.sh bei der Erkennung von USB Geräten

Erstellt von: f_666 Verantwortlicher: er13
Priorität: normal Meilenstein: freetz-next
Komponente: patches Version: devel
Stichworte: freetzmount Beobachter:
Product Id: Firmware Version:

Beschreibung

Bei der Änderung [13023] hat sich ein Fehler eingeschlichen, welcher einen fehlenden Eintrag in der /var/tmp/mediadevmap verursacht:

if [ -f "$1" -o -f "/proc/bus/usb/$1" -o -f "/dev/bus/usb/$1" ]; then

prüft mit "-f" ob die USB Gerätedatei eine reguläre Datei ist. Dieser Test schlägt immer fehl, da es natürlich eine Gerätedatei ist. Richtig ist:

if [ -f "$1" -o -f "/proc/bus/usb/$1" -o -c "/dev/bus/usb/$1" ]; then

Der Fehler ist zu erkennen an einem zweiten Eintrag im FritzBox Ereignisprotokoll, dass die Partition angeblich leer ist, obwohl wenige Sekunden vorher bereits die Meldung kam, dass die Partition erfolgreich eingebunden wurde.
Die 2. Meldung kommt aus der Funktion poll_scsi_device() aus der Datei udev-mount-sd.

Anhänge (1)

libmodmount_fix.patch (759 Byte) - hinzugefügt von f_666 vor 9 Tagen.

Alle Anhänge herunterladen als: .zip

Änderungshistorie (4)

Geändert vor 9 Tagen durch f_666

comment:1 Geändert vor 9 Tagen durch er13

Danke fürs Melden des Fehlers!

Die Frage, die sich für mich stellt, ist es - wird -f bzw. -c wirklich benötigt? Reicht an der Stelle nicht ein einfaches -e aus?

Edit: warum hast Du Dich übrigens für -c entschieden? Ist es nicht Hardware/Treiber abhängig, ob es als character- oder als block-device eingebunden wird? Habe jetzt beim Googlen aufs Schnelle nichts gefunden, wo es stünde, dass USB-Datenträger ausschließlich als character-device eingebunden werden, in den meisten Fällen wahrscheinlich schon, aber eben nicht ausschließlich.

Zuletzt geändert vor 9 Tagen von er13 (vorher) (Diff)

comment:2 Geändert vor 8 Tagen durch f_666

Hier die Ausgabe von ls -laR /dev/bus/usb:

/dev/bus/usb/:
drwxr-xr-x    4 root     root            80 Jan  1  1970 .
drwxr-xr-x    3 root     root            60 Jan  1  1970 ..
drwxr-xr-x    2 root     root            80 Jan  1  1970 001
drwxr-xr-x    2 root     root            80 Jan  1  1970 002

/dev/bus/usb/001:
drwxr-xr-x    2 root     root            80 Jan  1  1970 .
drwxr-xr-x    4 root     root            80 Jan  1  1970 ..
crw-rw-r--    1 root     root      189,   0 Jan  1  1970 001
crw-rw-r--    1 root     root      189,   1 Jan  1  1970 002

/dev/bus/usb/002:
drwxr-xr-x    2 root     root            80 Jan  1  1970 .
drwxr-xr-x    4 root     root            80 Jan  1  1970 ..
crw-rw-r--    1 root     root      189, 128 Jan  1  1970 001
crw-rw-r--    1 root     root      189, 129 Jan  1  1970 002

und die Ausgabe von lsusb -s:

BUS=002
DEV=001
VID=1d6b
PID=0003
CLS=09
SCL=00
SPEED='super'
VER='3.0'
MANU='Linux 3.10.73 xhci_hcd'
PROD='xHCI Host Controller'
SNUM='0000:01:00.0'
ISOC=0
INUM=1
ICLS1=09
ISCL1=00

BUS=002
DEV=002
VID=0bc2
PID=3322
CLS=00
SCL=00
SPEED='super'
VER='3.0'
MANU='Seagate'
PROD='Expansion Desk'
SNUM='NA8ED39K'
ISOC=0
INUM=1
ICLS1=08
ISCL1=06

BUS=001
DEV=001
VID=1d6b
PID=0002
CLS=09
SCL=00
SPEED='hi'
VER='2.0'
MANU='Linux 3.10.73 xhci_hcd'
PROD='xHCI Host Controller'
SNUM='0000:01:00.0'
ISOC=0
INUM=1
ICLS1=09
ISCL1=00

BUS=001
DEV=002
VID=0b48
PID=3014
CLS=00
SCL=00
SPEED='hi'
VER='2.0'
MANU='CityCom GmbH'
PROD='TechnoTrend USB-Stick'
SNUM='20131128'
ISOC=1
INUM=1
ICLS1=255
ISCL1=01

Es sieht so aus, als wären unter /dev/bus/usb/ immer Zeichengeräte.

Aber ob man jetzt -c oder -e benutzt, sollte am Ende egal sein.

comment:3 Geändert vor 5 Tagen durch er13

  • Lösung auf fixed gesetzt
  • Status von new nach closed geändert
  • Verantwortlicher auf er13 gesetzt

In 14261:

libmodmount:

  • fix test condition from r13023, files under /dev/bus/usb/... are usually character devices and not regular files (by f_666)
  • closes #2906
Hinweis: Hilfe zur Verwendung von Tickets finden Sie in TracTickets.