From: "Torbjørn Skagestad" <torbjorn@itpas.no>
To: Phil Turmel <philip@turmel.org>
Cc: "Roman Mamedov" <rm@romanrm.ru>,
linux-raid@vger.kernel.org, "Roman Mamedov" <roman@rm.pp.ru>,
"John Robinson" <john.robinson@anonymous.org.uk>,
CoolCold <coolthecold@gmail.com>,
"Mathias Burén" <mathias.buren@gmail.com>
Subject: Re: Storage device enumeration script
Date: Thu, 26 May 2011 20:42:35 +0200 [thread overview]
Message-ID: <1306435355.3684.7.camel@ts-workstation> (raw)
In-Reply-To: <4DDE9A61.2070201@turmel.org>
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
--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2011-05-26 18:42 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-26 3:03 Storage device enumeration script Phil Turmel
2011-05-26 3:10 ` Mathias Burén
2011-05-26 3:21 ` Phil Turmel
2011-05-26 3:25 ` Mathias Burén
2011-05-26 5:25 ` Roman Mamedov
2011-05-26 8:24 ` CoolCold
2011-05-26 12:00 ` Phil Turmel
2011-05-31 18:51 ` Simon McNair
2011-05-31 21:21 ` CoolCold
2011-06-01 3:58 ` Phil Turmel
2011-05-26 6:14 ` Leslie Rhorer
2011-05-26 6:16 ` Mathias Burén
2011-05-26 11:41 ` Phil Turmel
2011-05-27 0:13 ` Leslie Rhorer
2011-05-27 0:16 ` Brad Campbell
2011-05-27 3:58 ` Roman Mamedov
2011-05-27 10:45 ` Gordon Henderson
2011-05-27 11:26 ` Torbjørn Skagestad
2011-05-27 11:42 ` Gordon Henderson
2011-05-27 12:06 ` Phil Turmel
2011-05-26 8:11 ` CoolCold
2011-05-26 9:27 ` John Robinson
2011-05-26 9:45 ` Torbjørn Skagestad
2011-05-26 9:59 ` John Robinson
2011-05-26 11:49 ` Phil Turmel
2011-05-26 12:05 ` Torbjørn Skagestad
2011-05-27 9:15 ` John Robinson
2011-05-27 9:44 ` John Robinson
2011-05-27 11:23 ` Phil Turmel
2011-06-01 3:43 ` Phil Turmel
2011-05-26 11:39 ` Phil Turmel
2011-05-26 11:52 ` Torbjørn Skagestad
2011-05-26 17:46 ` Phil Turmel
2011-05-26 17:51 ` Mathias Burén
2011-05-26 17:54 ` Roman Mamedov
2011-05-26 18:02 ` Phil Turmel
2011-05-26 18:12 ` Roman Mamedov
2011-05-26 18:22 ` Phil Turmel
2011-05-26 18:42 ` Torbjørn Skagestad [this message]
2011-05-26 18:58 ` CoolCold
2011-05-26 19:16 ` Phil Turmel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1306435355.3684.7.camel@ts-workstation \
--to=torbjorn@itpas.no \
--cc=coolthecold@gmail.com \
--cc=john.robinson@anonymous.org.uk \
--cc=linux-raid@vger.kernel.org \
--cc=mathias.buren@gmail.com \
--cc=philip@turmel.org \
--cc=rm@romanrm.ru \
--cc=roman@rm.pp.ru \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).