<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7652.24">
<TITLE>RE: mdev scan</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->

<P><FONT SIZE=2>Because a picture is worth a thousand words...<BR>
<BR>
--- util-linux/mdev.c&nbsp;&nbsp; 2008-07-01 17:34:50.000000000 +0200<BR>
+++ util-linux/mdev.c.new&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2008-07-08 00:16:36.000000000 +0200<BR>
@@ -21,8 +21,6 @@<BR>
&nbsp;#define root_major (G.root_major)<BR>
&nbsp;#define root_minor (G.root_minor)<BR>
<BR>
-#define MAX_SYSFS_DEPTH 3 /* prevent infinite loops in /sys symlinks */<BR>
-<BR>
&nbsp;/* We use additional 64+ bytes in make_device() */<BR>
&nbsp;#define SCRATCH_SIZE 80<BR>
<BR>
@@ -76,11 +74,10 @@<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * &quot;/sys/block/...&quot; is for block devices. &quot;/sys/bus&quot; etc is not!<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * Since kernel 2.6.25 block devices are also in /sys/class/block. */<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* TODO: would it be acceptable to just use strstr(path, &quot;/block/&quot;)? */<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (strncmp(&amp;path[5], &quot;class/block/&quot;+6, 6) != 0<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; strncmp(&amp;path[5], &quot;class/block/&quot;, 12) != 0)<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type = S_IFCHR;<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (NULL == strstr(&amp;path[5], &quot;/block/&quot;))<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type = S_IFCHR;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type = S_IFBLK;<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type = S_IFBLK;<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (ENABLE_FEATURE_MDEV_CONF) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FILE *fp;<BR>
@@ -315,15 +312,6 @@<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return TRUE;<BR>
&nbsp;}<BR>
<BR>
-/* Directory callback for /sys/ traversal */<BR>
-static int dirAction(const char *fileName ATTRIBUTE_UNUSED,<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct stat *statbuf ATTRIBUTE_UNUSED,<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void *userData ATTRIBUTE_UNUSED,<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int depth)<BR>
-{<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (depth &gt;= MAX_SYSFS_DEPTH ? SKIP : TRUE);<BR>
-}<BR>
-<BR>
&nbsp;/* For the full gory details, see linux/Documentation/firmware_class/README<BR>
&nbsp; *<BR>
&nbsp; * Firmware loading works like this:<BR>
@@ -401,13 +389,8 @@<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root_major = major(st.st_dev);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root_minor = minor(st.st_dev);<BR>
<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; recursive_action(&quot;/sys/block&quot;,<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACTION_RECURSE | ACTION_FOLLOWLINKS,<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fileAction, dirAction, temp, 0);<BR>
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; recursive_action(&quot;/sys/class&quot;,<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACTION_RECURSE | ACTION_FOLLOWLINKS,<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fileAction, dirAction, temp, 0);<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; recursive_action(&quot;/sys&quot;, ACTION_RECURSE,<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fileAction, NULL, temp, 0);<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Hotplug:<BR>
<BR>
<BR>
The patch has been tested on 2.6.19.2 kernel. I hope to get it tested on 2.6.13 in the<BR>
coming week.<BR>
<BR>
John<BR>
<BR>
<BR>
</FONT>
</P>

<br>
<span style="font-family:Arial,sans-serif;font-size:10pt;color:blue"><b>Cellent Finance Solutions AG</b></span><br><br>
<span style="font-family:Arial,sans-serif;font-size:9pt">
Firmensitz: Calwer Straße 33, 70173 Stuttgart<br>
Registergericht: Amtsgericht Stuttgart, HRB 720743<br>
Vorstand: Thomas Wild<br>
Vorsitzender des Aufsichtsrats: Rudolf Zipf
</span>
</BODY>
</HTML>