[NFS] fetching kernel via nfs

Sébastien Szymanski sebastien.szymanski at armadeus.com
Wed May 15 18:53:08 CEST 2024


Hello,

On 5/15/24 14:40, Johannes Kirchmair - SKIDATA wrote:
> Dear u-boot people,
> 
> I encountered some problems trying to fetch the Linux kernel via nfs (v3).
> One problem was that the nfs file lookup always returned NFS3ERR_BADHANDLE.

I have fixed this. See:

https://source.denx.de/u-boot/u-boot/-/commit/d2986567b27dae764b19886bcda1d24b7c41d075

Regards,

> This is due to the following line in nfs_lookup_req() function (net/nfs.c):
> 
> 		len = (uint32_t *)p - (uint32_t *)&(data[0]);
> 		rpc_req(PROG_NFS, NFS_LOOKUP, data, len);
> 	} else {  /* NFS_V3 */
> 		*p++ = htonl(NFS_FHSIZE);	/* Dir handle length */    <=====  this line
> 		memcpy(p, dirfh, NFS_FHSIZE);
> 		p += (NFS_FHSIZE / 4);
> 		*p++ = htonl(fnamelen);
> 
> In the NFS_V3 case we add the dir file handle  size to data and then the dir file handle.
> IUC, this is not correct here because dirfh includes already the size of the handle in the first 4 bytes.
> Feel free to correct me if I am wrong.
> 
> As a result, if I remove the line "*p++ = htonl(NFS_FHSIZE);", it works fine.
> 
> Don't have an in deps understanding of nfs, so I am not sure if this is the root problem here.
> 
> Best regards Johannes

-- 
Sébastien Szymanski, Armadeus Systems
Software engineer



More information about the U-Boot mailing list