Hi, Upgrading the nfs-utils package from 2.3.4 to 2.4.1 on my nas device running Arch Linux ARM (alarm) broke the nfs server functionality. On all of my clients, mount fails with a "Stale file handle" error. On the server, I get this (side note: the reported version number is wrong): Jul 08 10:28:50 nas rpc.mountd[19752]: Version 2.3.4 starting Jul 08 10:30:08 nas rpc.mountd[19752]: auth_unix_ip: inbuf 'nfsd <redacted valid ipv6 address>' Jul 08 10:30:08 nas rpc.mountd[19752]: auth_unix_ip: client 0x492c50 'zero.local' Jul 08 10:30:08 nas rpc.mountd[19752]: nfsd_fh: inbuf 'zero.local 1 \x00000000' Jul 08 10:30:08 nas rpc.mountd[19752]: nfsd_fh: found 0x49b698 path /srv/nfs Jul 08 10:30:08 nas rpc.mountd[19752]: nfsd_export: inbuf 'zero.local /srv/nfs/tmp2' Jul 08 10:30:09 nas rpc.mountd[19752]: nfsd_export: found 0x499ed0 path /srv/nfs/tmp2 Jul 08 10:30:09 nas rpc.mountd[19752]: nfsd_fh: inbuf 'zero.local 7 \x0100140000000000ae18d6965c0a40f78701c770897a4fc> Jul 08 10:30:09 nas rpc.mountd[19752]: nfsd_fh: found (nil) path (null) Analysis: Consider this code snippet from utils/mountd/cache.c: 627 static bool match_fsid(struct parsed_fsid *parsed, nfs_export *exp, char *path) 628 { 629 struct stat stb; 630 int type; 631 char u[16]; 632 633 if (nfsd_path_stat(path, &stb) != 0) 634 return false; Variable stb gets defined, then gets filled by nfs_path_stat(), which is implemented in support/misc/nfsd_path.c. At least on alarm, definition of struct stat in stat.h depends on __USE_FILE_OFFSET64, which comes from config.h if defined. This requires config.h to be included before stat.h. The include order is right in cache.c, however, it's reversed in nfsd_path.c. This causes the data returned by nfs_path_stat() to be in a different structure than expected, and that's what eventually causes the error. Proposed solution: The following patch fixes those occurrences where the include order between config.h and stat.h is wrong, by moving config.h to the top. Regards, Zoltan Karcagi