<br><font size=2 face="sans-serif">After I try busbox 1.6.1, the bad file
descriptor error disappear, but still got RPC timeout error. And the mount
service is still V1. I think it is due to the failed nfs mount use a very
early verion 1 of mount service. Anyone who knows how to update the mount
servce version?</font>
<br>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td width=40%><font size=1 face="sans-serif"><b>Denys Vlasenko &lt;vda.linux@googlemail.com&gt;</b>
</font>
<p><font size=1 face="sans-serif">08/28/2007 06:56 PM</font>
<td width=59%>
<table width=100%>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">$B08@h(B</font></div>
<td><font size=1 face="sans-serif">xiao.liang@cn.alps.com</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">cc</font></div>
<td><font size=1 face="sans-serif">busybox@busybox.net<br>
&quot;hinko.kocevar@cetrtapot.si&quot; &lt;hinko.kocevar@cetrtapot.si&gt;</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">$B7oL>(B</font></div>
<td><font size=1 face="sans-serif">Re: mount:nfsmount failed: Bad file
descriptor</font></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br>
<br><tt><font size=2>On Tuesday 28 August 2007 04:33, xiao.liang@cn.alps.com
wrote:<br>
&gt; When use strace the log is look like this:<br>
&gt;<br>
&gt; root# cat mount.log<br>
&gt; execve(&quot;/bin/mount&quot;, [&quot;mount&quot;, &quot;-t&quot;,
&quot;nfs&quot;, &quot;192.168.1.6:/opt/Qtopia_2&quot;,<br>
&gt; &quot;/opt/Qtopia_2&quot;], [/* 10 vars */]) = 0<br>
&gt; uname({sys=&quot;Linux&quot;, node=&quot;imx21&quot;, ...}) = 0<br>
&gt; brk(0) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= 0xabeec<br>
&gt; old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1,<br>
&gt; 0) = 0x40015000<br>
&gt; open(&quot;/etc/ld.so.preload&quot;, O_RDONLY) &nbsp; &nbsp;= -1 ENOENT
(No such file or<br>
&gt; directory)<br>
&gt; open(&quot;/etc/ld.so.cache&quot;, O_RDONLY) &nbsp; &nbsp; &nbsp;=
-1 ENOENT (No such file or<br>
&gt; directory)<br>
&gt; open(&quot;/lib/v5EJl/fast-mult/half/libcrypt.so.1&quot;, O_RDONLY)
= -1 ENOENT (No<br>
&gt; such file or directory)<br>
&gt; stat64(&quot;/lib/v5EJl/fast-mult/half&quot;, 0xbffff2bc) = -1 ENOENT
(No such file<br>
&gt; or directory)<br>
&gt; open(&quot;/lib/v5EJl/fast-mult/libcrypt.so.1&quot;, O_RDONLY) = -1
ENOENT (No such<br>
&gt; file or directory)<br>
...<br>
&gt; sendto(3, &quot;]\234\333\177\0\0\0\0\0\0\0\2\0\1\206\245\0\0\0\1\0\0\0&quot;...,<br>
&gt; 88, 0, {sa_family=AF_INET, sin_port=htons(635), sin_addr=inet_addr8<br>
&gt; poll([{fd=3, events=POLLIN}], 1, 3000) &nbsp;= 0<br>
&gt; ioctl(3, 0x8912, 0xbfffcecc) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=
0<br>
&gt; ioctl(3, 0x8913, 0xbfffced4) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=
0<br>
&gt; sendto(3, &quot;]\234\333\177\0\0\0\0\0\0\0\2\0\1\206\245\0\0\0\1\0\0\0&quot;...,<br>
&gt; 88, 0, {sa_family=AF_INET, sin_port=htons(635), sin_addr=inet_addr8<br>
&gt; poll([{fd=3, events=POLLIN}], 1, 3000) &nbsp;= 0<br>
&gt; ioctl(3, 0x8912, 0xbfffcecc) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=
0<br>
&gt; ioctl(3, 0x8913, 0xbfffced4) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=
0<br>
&gt; write(2, &quot;mount: RPC: Timed out\n&quot;, 22) = 22<br>
&gt; close(3) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= 0<br>
&gt; close(3) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= -1 EBADF (Bad file descriptor)<br>
&gt; write(2, &quot;mount: &quot;, 7) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp;= 7<br>
&gt; write(2, &quot;nfsmount failed&quot;, 15) &nbsp; &nbsp; &nbsp; &nbsp;
= 15<br>
&gt; write(2, &quot;: Bad file descriptor\n&quot;, 22) = 22<br>
&gt; write(2, &quot;mount: &quot;, 7) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp;= 7<br>
&gt; write(2, &quot;Mounting 192.168.1.6:/opt/Qtopia&quot;..., 58) = 58<br>
&gt; write(2, &quot;: Bad file descriptor\n&quot;, 22) = 22<br>
&gt; _exit(1) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= ?<br>
<br>
<br>
Thank you for this wonderfully linewrapped listing.<br>
It was a real joy fixing it up ;)<br>
<br>
Ok, Im serious again. Is this 1.6.1?<br>
if it is not, please try 1.6.1.<br>
If it is, please try adding &quot;msock = -1&quot; in mount.c:<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;/* Connection refused */<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;if (!daemonized &amp;&amp; prevt == 0) /* print just once
*/<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;error_msg_rpc(clnt_sperror(mclient,
&quot; &quot;));<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;auth_destroy(mclient-&gt;cl_auth);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;clnt_destroy(mclient);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;mclient = 0;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;close(msock);<br>
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; msock = -1;<br>
<br>
and here:<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;/* clean up */<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;auth_destroy(mclient-&gt;cl_auth);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;clnt_destroy(mclient);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;close(msock);<br>
+ &nbsp; &nbsp; &nbsp; msock = -1;<br>
<br>
This may fix extra close() and prevent bogus error message about<br>
&quot;Bad file descriptor&quot;. In reality you are seeing timeout:<br>
<br>
<br>
time(NULL) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= 197<br>
socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 3<br>
getpid() &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= 60<br>
bind(3, {sa_family=AF_INET, sin_port=htons(660), <br>
sin_addr=inet_addr(&quot;0.0.0.0&quot;)}, 16) = 0<br>
connect(3, {sa_family=AF_INET, sin_port=htons(111), <br>
sin_addr=inet_addr(&quot;192.168.1.6&quot;)}, 16) = -1 ETIMEDOUT (Connection
timed out)<br>
close(3) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= 0<br>
brk(0) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= 0xad000<br>
brk(0xb1000) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= 0xb1000<br>
gettimeofday({386, 767720}, NULL) &nbsp; &nbsp; &nbsp; = 0<br>
<br>
See? Connection to portmapper failed after almost 200 seconds of trying.<br>
And then attempts to use default port and reach mount directly time out
too<br>
(poll() waits for 3 seconds and returns 0 -&gt; no reply received):<br>
<br>
socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP) = 3<br>
bind(3, {sa_family=AF_INET, sin_port=htons(661), <br>
sin_addr=inet_addr(&quot;0.0.0.0&quot;)}, 16) = 0<br>
ioctl(3, FIONBIO, [1]) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;= 0<br>
setsockopt(3, SOL_IP, IP_RECVERR, [1], 4) = 0<br>
uname({sys=&quot;Linux&quot;, node=&quot;imx21&quot;, ...}) = 0<br>
geteuid32() &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = 0<br>
getegid32() &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = 0<br>
getgroups32(0x20, 0xbffff0bc) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = 0<br>
gettimeofday({386, 811220}, NULL) &nbsp; &nbsp; &nbsp; = 0<br>
sendto(3, &quot;]\234\333\177\0\0\0\0\0\0\0\2\0\1\206\245\0\0\0\1\0\0\0&quot;...,
88, 0, <br>
{sa_family=AF_INET, sin_port=htons(635), sin_addr=inet_addr8<br>
poll([{fd=3, events=POLLIN}], 1, 3000) &nbsp;= 0<br>
ioctl(3, 0x8912, 0xbfffcecc) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=
0<br>
ioctl(3, 0x8913, 0xbfffced4) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=
0<br>
sendto(3, &quot;]\234\333\177\0\0\0\0\0\0\0\2\0\1\206\245\0\0\0\1\0\0\0&quot;...,
88, 0, <br>
{sa_family=AF_INET, sin_port=htons(635), sin_addr=inet_addr8<br>
poll([{fd=3, events=POLLIN}], 1, 3000) &nbsp;= 0<br>
ioctl(3, 0x8912, 0xbfffcecc) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=
0<br>
ioctl(3, 0x8913, 0xbfffced4) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=
0<br>
sendto(3, &quot;]\234\333\177\0\0\0\0\0\0\0\2\0\1\206\245\0\0\0\1\0\0\0&quot;...,
88, 0, <br>
{sa_family=AF_INET, sin_port=htons(635), sin_addr=inet_addr8<br>
poll([{fd=3, events=POLLIN}], 1, 3000) &nbsp;= 0<br>
ioctl(3, 0x8912, 0xbfffcecc) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=
0<br>
ioctl(3, 0x8913, 0xbfffced4) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=
0<br>
sendto(3, &quot;]\234\333\177\0\0\0\0\0\0\0\2\0\1\206\245\0\0\0\1\0\0\0&quot;...,
88, 0, <br>
{sa_family=AF_INET, sin_port=htons(635), sin_addr=inet_addr8<br>
poll([{fd=3, events=POLLIN}], 1, 3000) &nbsp;= 0<br>
ioctl(3, 0x8912, 0xbfffcecc) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=
0<br>
ioctl(3, 0x8913, 0xbfffced4) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=
0<br>
sendto(3, &quot;]\234\333\177\0\0\0\0\0\0\0\2\0\1\206\245\0\0\0\1\0\0\0&quot;...,
88, 0, <br>
{sa_family=AF_INET, sin_port=htons(635), sin_addr=inet_addr8<br>
poll([{fd=3, events=POLLIN}], 1, 3000) &nbsp;= 0<br>
ioctl(3, 0x8912, 0xbfffcecc) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=
0<br>
ioctl(3, 0x8913, 0xbfffced4) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=
0<br>
sendto(3, &quot;]\234\333\177\0\0\0\0\0\0\0\2\0\1\206\245\0\0\0\1\0\0\0&quot;...,
88, 0, <br>
{sa_family=AF_INET, sin_port=htons(635), sin_addr=inet_addr8<br>
poll([{fd=3, events=POLLIN}], 1, 3000) &nbsp;= 0<br>
ioctl(3, 0x8912, 0xbfffcecc) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=
0<br>
ioctl(3, 0x8913, 0xbfffced4) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=
0<br>
sendto(3, &quot;]\234\333\177\0\0\0\0\0\0\0\2\0\1\206\245\0\0\0\1\0\0\0&quot;...,
88, 0, <br>
{sa_family=AF_INET, sin_port=htons(635), sin_addr=inet_addr8<br>
poll([{fd=3, events=POLLIN}], 1, 3000) &nbsp;= 0<br>
ioctl(3, 0x8912, 0xbfffcecc) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=
0<br>
ioctl(3, 0x8913, 0xbfffced4) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=
0<br>
write(2, &quot;mount: RPC: Timed out\n&quot;, 22) = 22<br>
close(3) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= 0<br>
close(3) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= -1 EBADF (Bad file descriptor)<br>
write(2, &quot;mount: &quot;, 7) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp;= 7<br>
write(2, &quot;nfsmount failed&quot;, 15) &nbsp; &nbsp; &nbsp; &nbsp; =
15<br>
write(2, &quot;: Bad file descriptor\n&quot;, 22) = 22<br>
<br>
<br>
Apart from bogus close() screwing up error code, I dont see<br>
any problem on client side. It simply cannot reach the server.<br>
--<br>
vda<br>
</font></tt>
<br>