Re: Storage device enumeration script

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I guess we should move off this list, may be continue on github comments.

On Thu, May 26, 2011 at 10:42 PM, Torbjørn Skagestad <torbjorn@xxxxxxxx> wrote:
> Hi,
>
> I'm hitting this as well.It seems to be triggered by my non-existing
> floppy device.
>
> As there is no real floppy device connected, no driver is loaded, so we
> never see a /driver directory. This loop then goes all the way up to /,
> where it loops forever at 100% cpu.
>
>
> from probe_controller()
> 151 while cpath and not os.path.exists(cpath+'/driver'):
> 152             cpath = os.path.dirname(cpath)
> 153             if cpath in controllers:
> 154                     return controllers[cpath]
>
>
> On Thu, 2011-05-26 at 14:22 -0400, Phil Turmel wrote:
>> On 05/26/2011 02:12 PM, Roman Mamedov wrote:
>> [...]
>> > Now it locks up with 100% CPU load and no output, I waited for a couple of
>> > minutes. On Ctrl-C:
>> >
>> > ^CTraceback (most recent call last):
>> >   File "./lsdrv", line 274, in <module>
>> >     probe_block('/sys/block/'+x)
>> >
>> > $ ls /sys/block/
>> > etherd!e1.5  etherd!e2.1  md0  md2  sda  sdc  sde  sdg
>> > etherd!e1.6  fd0          md1  md4  sdb  sdd  sdf
>> >
>> > The first two devices are actually down at this moment, maybe that's the
>> > reason? Still I'd expect not 100% CPU load by lsdrv, but 0% CPU and 100%
>> > iowait in this case.
>>
>> Sounds like an infinite loop, or infinite recursion.  Could you apply the temporary patch below so I can see how far the probing got?
>>
>> > Output of the old (bash) lsdrv:
>> >
>> > Controller device @ pci0000:00/0000:00:06.0 [pata_amd]
>> >   IDE interface: nVidia Corporation CK804 IDE (rev f2)
>> >     host8: [Empty]
>> >     host9: [Empty]
>> > Controller device @ pci0000:00/0000:00:07.0 [sata_nv]
>> >   IDE interface: nVidia Corporation CK804 Serial ATA Controller (rev f3)
>> >     host6: /dev/sdd ATA Hitachi HDS5C302 {SN: ..............}
>> >     host7: /dev/sde ATA WDC WD15EADS-00S {SN: ..............}
>> > Controller device @ pci0000:00/0000:00:08.0 [sata_nv]
>> >   IDE interface: nVidia Corporation CK804 Serial ATA Controller (rev f3)
>> >     host10: /dev/sdf ATA WDC WD20EADS-00S {SN: ..............}
>> >     host11: /dev/sdg ATA WDC WD20EADS-00S {SN: ..............}
>> > Controller device @ pci0000:00/0000:00:0d.0/0000:02:00.0 [ahci]
>> >   SATA controller: Marvell Technology Group Ltd. 88SE9123 PCIe SATA 6.0 Gb/s
>> > controller (rev 10) host4: /dev/sdc ATA Hitachi HDS5C302 {SN: ..............}
>> >     host5: [Empty]
>> > Controller device @ pci0000:00/0000:00:0e.0/0000:01:00.0 [sata_mv]
>> >   SCSI storage controller: Marvell Technology Group Ltd. 88SX7042 PCI-e 4-port
>> > SATA-II (rev 02) host0: [Empty]
>> >     host1: [Empty]
>> >     host2: /dev/sda ATA ST31000528AS {SN: ..............}
>> >     host3: /dev/sdb ATA Hitachi HDS72202 {SN: ..............}
>>
>> The old code never attempted to recurse into the layers of block devices, so it can't have recursion problems.
>>
>> Phil
>>
>> 8<-------------------------
>>
>> diff --git a/lsdrv b/lsdrv
>> index d1caaf8..37728c1 100755
>> --- a/lsdrv
>> +++ b/lsdrv
>> @@ -145,6 +145,7 @@ def sect2size(sectors):
>>  # the struct object w/ filled in details.
>>  controllers=dict()
>>  def probe_controller(cpathlink):
>> +     print "Probing controller %s" % cpathlink
>>       cpath = os.path.realpath(cpathlink)
>>       if cpath in controllers:
>>               return controllers[cpath]
>> @@ -186,6 +187,7 @@ def probe_controller(cpathlink):
>>  # controller.
>>  phydevs=dict()
>>  def probe_device(devpathlink, nodestr):
>> +     print "Probing device %s" % devpathlink
>>       devpath = os.path.realpath(devpathlink)
>>       if devpath in phydevs:
>>               return phydevs[devpath]
>> @@ -214,6 +216,7 @@ def probe_device(devpathlink, nodestr):
>>  blockbyname=dict()
>>  blockbynode=dict()
>>  def probe_block(blocklink):
>> +     print "Probing block %s" % blocklink
>>       name=blocklink.rsplit('/', 1)[-1]
>>       if name in blockbyname:
>>               return
>
> --
> Torbjørn Skagestad
> Ide Til Produkt A/S
>
>



-- 
Best regards,
[COOLCOLD-RIPN]
--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux