[Yaird-devel] Bug#354247: yaird error: no link to block device in ... (fatal)

Jason Boxman jasonb at edseek.com
Fri Feb 24 18:03:58 UTC 2006


Package: yaird
Version: 0.0.12-2bpo1
Severity: Normal

Unless something changes before 2.6.16 is released, the sysfs entry for my
ATA controller isn't discovered as sysfs information has been changed, at
least for my ATA controller.

I've included a patch that resolves the immediate issue for me, but it's a 3
am kludge. :)

Thanks.

faith:~# uname -a
Linux faith 2.6.16-rc3-20060212 #1 PREEMPT Sun Feb 12 23:08:47 EST 2006 i686
GNU/Linux

faith:~# yaird -vd -o /tmp/test.img `uname -r`
yaird: goal: template, prologue (/etc/yaird/Default.cfg:52)
yaird: action: prologue,  {}
yaird: goal: module, fbcon (/etc/yaird/Default.cfg:56)
yaird:D: KConfig::init completed - /boot/config-2.6.16-rc3-20060212
yaird:D: KConfig::isBuiltIn fbcon - no
yaird:D: addOneModule: modprobe fbcon
yaird:D: runCmd - doing /sbin/modprobe -v -n --show-depends --set-version
2.6.16-rc3-20060212 fbcon
yaird:D: runCmd - result '' for /sbin/modprobe -v -n --show-depends
--set-version 2.6.16-rc3-20060212 fbcon
yaird: goal: input, -- (/etc/yaird/Default.cfg:73)
yaird:D: addInput: consider AT Translated Set 2 keyboard is
isa0060/serio0/input0 at platform/i8042/serio1 [event0,kbd] [LED,KEY,EV,MSC]
(KBD)
yaird:D: Hardware::moduleList - platform/i8042/serio1
yaird:D: KConfig::isBuiltIn i8042, SERIO_I8042 - yes
yaird:D: KConfig::isBuiltIn atkbd, KEYBOARD_ATKBD - yes
yaird: hardware: completed platform/i8042/serio1
yaird:D: addInput: consider ImPS/2 Generic Wheel Mouse is
isa0060/serio1/input0 at platform/i8042/serio0 [event1,mouse0] [KEY,REL,EV]
yaird:D: addInput: skipping
yaird:D: addInput: end
yaird: goal: module, mousedev (/etc/yaird/Default.cfg:103)
yaird:D: KConfig::isBuiltIn mousedev, INPUT_MOUSEDEV - yes
yaird: goal: module, evdev (/etc/yaird/Default.cfg:104)
yaird:D: KConfig::isBuiltIn evdev - no
yaird:D: addOneModule: modprobe evdev
yaird:D: runCmd - doing /sbin/modprobe -v -n --show-depends --set-version
2.6.16-rc3-20060212 evdev
yaird:D: runCmd - result '1' for /sbin/modprobe -v -n --show-depends
--set-version 2.6.16-rc3-20060212 evdev
yaird: action: insmod,
/lib/modules/2.6.16-rc3-20060212/kernel/drivers/input/evdev.ko
{optionList=-- }
yaird: goal: mountdir, / (/etc/yaird/Default.cfg:144)
yaird:D: runCmd - doing /sbin/mdadm --detail --scan
yaird:D: runCmd - result '1' for /sbin/mdadm --detail --scan
yaird:D: Hardware::moduleList - pci0000:00/0000:00:0f.0/ide2/2.0
yaird error: no link to block device in
/sys/devices/pci0000:00/0000:00:0f.0/ide2/2.0 (fatal)

faith:~# ls -l /sys/devices/pci0000:00/0000:00:0f.0/ide2/2.0
total 0
lrwxrwxrwx  1 root root    0 Feb 24 12:51 block:hde -> ../../../../../block/hde
lrwxrwxrwx  1 root root    0 Feb 24 12:51 bus -> ../../../../../bus/ide
-r--r--r--  1 root root 4096 Feb 24 12:51 drivename
lrwxrwxrwx  1 root root    0 Feb 24 12:51 driver ->
../../../../../bus/ide/drivers/ide-disk
-r--r--r--  1 root root 4096 Feb 24 12:51 media
-r--r--r--  1 root root 4096 Feb 24 12:51 modalias
drwxr-xr-x  2 root root    0 Feb 23 18:08 power
--w-------  1 root root 4096 Feb 24 12:51 uevent

faith:~# cd /sys/devices/pci0000:00/0000:00:0f.0/ide2/2.0/block\:hde
faith:/sys/devices/pci0000:00/0000:00:0f.0/ide2/2.0/block:hde# ls -l

total 0
-r--r--r--  1 root root 4096 Feb 23 18:08 dev
lrwxrwxrwx  1 root root    0 Feb 24 12:50 device ->
../../devices/pci0000:00/0000:00:0f.0/ide2/2.0
drwxr-xr-x  2 root root    0 Feb 23 18:08 hde1
drwxr-xr-x  2 root root    0 Feb 23 18:08 hde2
drwxr-xr-x  2 root root    0 Feb 23 18:08 hde3
drwxr-xr-x  2 root root    0 Feb 23 18:08 hde4
drwxr-xr-x  2 root root    0 Feb 23 18:08 hde5
drwxr-xr-x  2 root root    0 Feb 23 18:08 hde6
drwxr-xr-x  3 root root    0 Feb 23 18:08 queue
-r--r--r--  1 root root 4096 Feb 24 12:50 range
-r--r--r--  1 root root 4096 Feb 24 12:50 removable
-r--r--r--  1 root root 4096 Feb 24 12:50 size
-r--r--r--  1 root root 4096 Feb 24 12:50 stat
--w-------  1 root root 4096 Feb 24 12:50 uevent

faith:/sys/devices/pci0000:00/0000:00:0f.0/ide2/2.0/block:hde# lspci
0000:00:00.0 Host bridge: Silicon Integrated Systems [SiS] 735 Host (rev 01)
0000:00:01.0 PCI bridge: Silicon Integrated Systems [SiS] Virtual PCI-to-PCI
bridge (AGP)
0000:00:02.0 ISA bridge: Silicon Integrated Systems [SiS] SiS85C503/5513
(LPC Bridge)
0000:00:02.1 SMBus: Silicon Integrated Systems [SiS]: Unknown device 0016
0000:00:02.2 USB Controller: Silicon Integrated Systems [SiS] USB 1.0
Controller (rev 07)
0000:00:02.3 USB Controller: Silicon Integrated Systems [SiS] USB 1.0
Controller (rev 07)
0000:00:02.5 IDE interface: Silicon Integrated Systems [SiS] 5513 [IDE] (rev
d0)
0000:00:03.0 Ethernet controller: Silicon Integrated Systems [SiS] SiS900
PCI Fast Ethernet (rev 90)
0000:00:0b.0 Multimedia audio controller: Creative Labs SB Live! EMU10k1
(rev 0a)
0000:00:0b.1 Input device controller: Creative Labs SB Live! MIDI/Game Port
(rev 0a)
0000:00:0f.0 Unknown mass storage controller: Promise Technology, Inc.
PDC20267 (FastTrak100/Ultra100) (rev 02)
0000:01:00.0 VGA compatible controller: nVidia Corporation NV25 [GeForce4 Ti
4200] (rev a3)

faith:~# cat /etc/fstab
/dev/md1        none            swap    sw                      0       0
/dev/md0        /      ext3  errors=remount-ro,noatime  0 1
/dev/md2        /usr   ext3  defaults,noatime  0 2
/dev/md3        /var   ext3  defaults,noatime  0 2
/dev/data/home  /home  xfs   defaults,noatime  0 2

--- /usr/src/IdeDev.pm  2006-02-22 01:12:55.000000000 -0500
+++ /usr/src/IdeDev.pm.mod      2006-02-24 01:08:29.000000000 -0500
@@ -50,13 +50,25 @@
        $self->takeArgs ('path');
        my $path = $self->path;
        my $link = readlink ("$path/block");
+       opendir( PATH, $path );
+       while( my $entry = readdir(PATH) ) {
+               next if $entry =~ m/^\.\.?/;
+#              print "$entry\n";
+               $entry =~ m/^.+:(.+)$/;
+#print "$1\n";
+               $link = $1;
+               print $link if defined $link;
+               last if $link;
+       }
+       closedir( PATH );
        if (! defined ($link)) {
                Base::fatal ("no link to block device in $path");
        }
-       if ($link !~ m!.*/([^/]+)!) {
+       if ($link !~ m!.*/([^/]+)! && length( $link ) > 3) {
                Base::fatal ("malformed link to block device in $path");
        }
        my $name = $1;
+       if( ! defined $name ) { $name = $link; }
        my $ideDir = Conf::get('procFs') . "/ide";
        $self->{name} = $name;
        $self->{media} = Base::getStringFile ("$ideDir/$name/media");







More information about the Yaird-devel mailing list