public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [RFC] NFS issue when loading two files
@ 2012-12-05 19:13 Matthias Brugger
  2012-12-05 22:20 ` Wolfgang Denk
  0 siblings, 1 reply; 3+ messages in thread
From: Matthias Brugger @ 2012-12-05 19:13 UTC (permalink / raw)
  To: u-boot

Hi all,

I run into an NFS issue when trying to load two files from nfs for 
booting (uImage and device tree binary):

When I try to unmount after loading the first file, I get some timeouts 
from the host which will lead to a re-send of the message.
Eventually I get a response from the host, but with a smaller rpc_id, as 
rpc_id is incremented on every re-send as well. This leads in an abort 
of the boot procedure, although a valid answer was given from the host.

Incrementing the NFS_TIMEOUT or adding the board IP to /etc/hosts 
resolves the issue, but is nothing more as a workaround.

I digged into the NFS protocol implementation, but I'm not quite sure if:
1) we shouldn't increment the rpc_id when re-sending a command.
2) change NFS_TIMEOUT value dynamically
3) add a state "wait" when we get an answer with an rpc_id smaller the 
one we sent.

Especially 1) I think isn't a good idea, as we break the RPC mechanism 
(I suppose), and we run in other issues. When we unmount after 
successfully load the first file, the mount of the second file will most 
probably get as answer a reply from a fromaly re-sent unmount command, 
and the boot process stops as well. [1]

Any ideas, which would be the best solution for this problem?

Best regards,
Matthias Brugger

[1] the process looks like:
mount
read file
unmount (timed out) #1
unmount (timed out) #2
unmount
get response of #1
mount
get response of #2
error!

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [U-Boot] [RFC] NFS issue when loading two files
  2012-12-05 19:13 [U-Boot] [RFC] NFS issue when loading two files Matthias Brugger
@ 2012-12-05 22:20 ` Wolfgang Denk
  2012-12-06  9:44   ` Matthias Brugger
  0 siblings, 1 reply; 3+ messages in thread
From: Wolfgang Denk @ 2012-12-05 22:20 UTC (permalink / raw)
  To: u-boot

Dear Matthias Brugger,

In message <50BF9CC3.9020207@gmail.com> you wrote:
> 
> I run into an NFS issue when trying to load two files from nfs for 
> booting (uImage and device tree binary):
> 
> When I try to unmount after loading the first file, I get some timeouts 
> from the host which will lead to a re-send of the message.
> Eventually I get a response from the host, but with a smaller rpc_id, as 
> rpc_id is incremented on every re-send as well. This leads in an abort 
> of the boot procedure, although a valid answer was given from the host.

How do you do the umount in U-Boot?

> [1] the process looks like:
> mount
> read file
> unmount (timed out) #1
> unmount (timed out) #2
> unmount
> get response of #1
> mount
> get response of #2
> error!

What is the exact sequence of U-Boot coomands that would trigger such
an error?

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Always try to do things in chronological order; it's  less  confusing
that way.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [U-Boot] [RFC] NFS issue when loading two files
  2012-12-05 22:20 ` Wolfgang Denk
@ 2012-12-06  9:44   ` Matthias Brugger
  0 siblings, 0 replies; 3+ messages in thread
From: Matthias Brugger @ 2012-12-06  9:44 UTC (permalink / raw)
  To: u-boot

Hello Wolfgang, hello all,

sorry for re-sending, but the list didn't accept an attachment.

On 12/05/2012 11:20 PM, Wolfgang Denk wrote:
> Dear Matthias Brugger,
>
> In message <50BF9CC3.9020207@gmail.com> you wrote:
>>
>> I run into an NFS issue when trying to load two files from nfs for
>> booting (uImage and device tree binary):
>>
>> When I try to unmount after loading the first file, I get some timeouts
>> from the host which will lead to a re-send of the message.
>> Eventually I get a response from the host, but with a smaller rpc_id, as
>> rpc_id is incremented on every re-send as well. This leads in an abort
>> of the boot procedure, although a valid answer was given from the host.
>
> How do you do the umount in U-Boot?

I wasn't clear on this, sorry.
It seems that u-boot sends a umountall command to the nfs server after 
having received the file.

>
>> [1] the process looks like:
>> mount
>> read file
>> unmount (timed out) #1
>> unmount (timed out) #2
>> unmount
>> get response of #1
>> mount
>> get response of #2
>> error!
>
> What is the exact sequence of U-Boot coomands that would trigger such
> an error?

I use igep0020 board. You can find my uEvent.txt at
http://pastebin.com/6mG6RJmf
Please note that I just load the uImage and the device tree binary from 
nfs, as device tree yet does not support network for my kernel.

If you want, I can send you a wireshark dump I made to analyse the problem.

Later this day I'll send a patch which resolves the issue.
Basically it does not increment rpc_id if a time out leads to a resend 
and it make the state machine drop messages with a lower rpc_id as the 
one in the state machine.

Best regards,
Matthias Brugger

>
> Best regards,
>
> Wolfgang Denk
>

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2012-12-06  9:44 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-12-05 19:13 [U-Boot] [RFC] NFS issue when loading two files Matthias Brugger
2012-12-05 22:20 ` Wolfgang Denk
2012-12-06  9:44   ` Matthias Brugger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox