linux-raid.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Phil Turmel <philip@turmel.org>
To: Roman Mamedov <rm@romanrm.ru>
Cc: "Torbjørn Skagestad" <torbjorn@itpas.no>,
	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 14:22:25 -0400	[thread overview]
Message-ID: <4DDE9A61.2070201@turmel.org> (raw)
In-Reply-To: <20110527001235.2b47572e@natsu>

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

  reply	other threads:[~2011-05-26 18:22 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 [this message]
2011-05-26 18:42               ` Torbjørn Skagestad
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=4DDE9A61.2070201@turmel.org \
    --to=philip@turmel.org \
    --cc=coolthecold@gmail.com \
    --cc=john.robinson@anonymous.org.uk \
    --cc=linux-raid@vger.kernel.org \
    --cc=mathias.buren@gmail.com \
    --cc=rm@romanrm.ru \
    --cc=roman@rm.pp.ru \
    --cc=torbjorn@itpas.no \
    /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).