Re: [BUG?] Maybe NFS bug since 2.6.37 on SPARC64

Chuck Lever
2011-11-14T15:31:07Z

Yes, that's what I intended. Thanks for testing the idea.

Sent from my iPad

On Nov 13, 2011, at 5:19 PM, Lukas Razik <linux@razik.name> wrote:

>> [ 1764.189975] ADDRCONF(NETDEV_UP): eth0: link is not ready
>
>> [ 1765.212110] IP-Config: Complete:
>> [ 1765.212180] device=eth0, addr=137.226.167.242, mask=255.255.255.224,
>> gw=137.226.167.225,
>> [ 1765.212383] host=137.226.167.242, domain=, nis-domain=(none),
>> [ 1765.212498] bootserver=255.255.255.255, rootserver=137.226.167.241,
>> rootpath=
>> [ 1765.212943] VFS: 1. attempt to mount root fs via NFS.
>> [ 1765.212992] Root-NFS: nfsroot=/srv/nfs/cluster2
>> [ 1765.213265] NFS: nfs mount opts='udp,nolock,addr=137.226.167.241'
>> [ 1765.213315] NFS: parsing nfs mount option 'udp'
>> [ 1765.213353] NFS: parsing nfs mount option 'nolock'
>> [ 1765.213399] NFS: parsing nfs mount option 'addr=137.226.167.241'
>> [ 1765.213467] NFS: MNTPATH: '/srv/nfs/cluster2'
>> [ 1765.213501] NFS: sending MNT request for 137.226.167.241:/srv/nfs/cluster2
>> [ 1766.298480] e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control:
>> Rx
>> [ 1766.318949] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
>> [ 1800.284325] NFS: failed to create MNT RPC client, status=-60
>> [ 1800.284435] NFS: unable to mount server 137.226.167.241, error -60
>> [ 1800.284571] VFS: 2. attempt to mount root fs via NFS.
>> [ 1800.284682] Root-NFS: nfsroot=/srv/nfs/cluster2
>> [ 1800.285051] NFS: nfs mount
>> opts='udp,nolock,addr=137.226.167.241,nolock,addr=137.226.167.241'
>> [ 1800.285167] NFS: parsing nfs mount option 'udp'
>> [ 1800.285233] NFS: parsing nfs mount option 'nolock'
>> [ 1800.285337] NFS: parsing nfs mount option 'addr=137.226.167.241'
>> [ 1800.285455] NFS: parsing nfs mount option 'nolock'
>> [ 1800.285531] NFS: parsing nfs mount option 'addr=137.226.167.241'
>
> Chuck, I've seen that it's wrong to wrap mount_nfs_root() with while() because then we get a multiple occurrence of some mount options. Hence I've edited mount_nfs_root() itself so that the options will be set only once.
> Maybe that's better?
> --- linux-2.6.39.4/init/do_mounts.c 2011-08-03 21:43:28.000000000 +0200
> +++ linux-2.6.39.4-fix/init/do_mounts.c 2011-11-13 23:05:13.000000000 +0100
> @@ -363,12 +363,18 @@
> static int __init mount_nfs_root(void)
> {
> char *root_dev, *root_data;
> + char attempt;
>
> if (nfs_root_data(&root_dev, &root_data) != 0)
> return 0;
> - if (do_mount_root(root_dev, "nfs", root_mountflags, root_data) != 0)
> - return 0;
> - return 1;
> +
> + for(attempt = 1; attempt <= 3; attempt++) {
> + printk(KERN_INFO "VFS: %d. attempt to mount root fs via NFS.\n", attempt);
> + if (do_mount_root(root_dev, "nfs", root_mountflags, root_data) == 0)
> + return 1;
> + }
> +
> + return 0;
> }
> #endif
>
> --
> Regards,
> Lukas
>
>
> PS: That's the new behaviour:
> [ 4416.829621] ADDRCONF(NETDEV_UP): eth0: link is not ready
> [ 4417.851657] IP-Config: Complete:
> [ 4417.851729] device=eth0, addr=137.226.167.242, mask=255.255.255.224, gw=137.226.167.225,
> [ 4417.851931] host=137.226.167.242, domain=, nis-domain=(none),
> [ 4417.852045] bootserver=255.255.255.255, rootserver=137.226.167.241, rootpath=
> [ 4417.852493] Root-NFS: nfsroot=/srv/nfs/cluster2
> [ 4417.852539] VFS: 1. attempt to mount root fs via NFS.
> [ 4417.852814] NFS: nfs mount opts='udp,nolock,addr=137.226.167.241'
> [ 4417.852893] NFS: parsing nfs mount option 'udp'
> [ 4417.852930] NFS: parsing nfs mount option 'nolock'
> [ 4417.852977] NFS: parsing nfs mount option 'addr=137.226.167.241'
> [ 4417.853073] NFS: MNTPATH: '/srv/nfs/cluster2'
> [ 4417.853137] NFS: sending MNT request for 137.226.167.241:/srv/nfs/cluster2
> [ 4418.933894] e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx
> [ 4418.954252] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
> [ 4452.967331] NFS: failed to create MNT RPC client, status=-60
> [ 4452.967441] NFS: unable to mount server 137.226.167.241, error -60
> [ 4452.967577] VFS: 2. attempt to mount root fs via NFS.
> [ 4452.967978] NFS: nfs mount opts='udp,nolock,addr=137.226.167.241'
> [ 4452.968085] NFS: parsing nfs mount option 'udp'
> [ 4452.968150] NFS: parsing nfs mount option 'nolock'
> [ 4452.968197] NFS: parsing nfs mount option 'addr=137.226.167.241'
> [ 4452.968333] NFS: MNTPATH: '/srv/nfs/cluster2'
> [ 4452.968397] NFS: sending MNT request for 137.226.167.241:/srv/nfs/cluster2
> [ 4452.974480] NFS: received 1 auth flavors
> [ 4452.974543] NFS: auth flavor[0]: 1
> [ 4452.974723] NFS: MNT request succeeded
> [ 4452.974785] NFS: using auth flavor 1
> [ 4452.979498] VFS: Mounted root (nfs filesystem) on device 0:13.
> INIT: version 2.88 booting