mirror of
https://git.yoctoproject.org/poky
synced 2026-04-19 15:32:13 +02:00
nfs-utils: fix nfs mount error on 32bit nfs server
There is a client side error "Stale file handle" when mounting from a
nfs server running on 32bit arch.
Steps to reproduce:
1. $ MACHINE=qemux86 bitbake core-image-sato
2. $ runqemu qemux86 kvm nographic qemuparams="-m 1024"
3. $ echo "/nfs_root *(insecure,rw,async,no_root_squash,no_subtree_check)" \
>> /etc/exports
$ /etc/init.d/nfsserver restart
root@qemux86:~# mount -t nfs 127.0.0.1:/nfs_root /mnt
mount: mounting 127.0.0.1:/nfs_root on /mnt failed: Stale file handle
Backport a patch to fix this issue.
(From OE-Core rev: 727e6ce1f904abf1a1059fde759c3aaea37de199)
Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
@@ -0,0 +1,156 @@
|
||||
From 2fbc62e2a13fc22b6ae4910e295a2c10fb790486 Mon Sep 17 00:00:00 2001
|
||||
From: Zoltan Karcagi <zkr7432@gmail.com>
|
||||
Date: Mon, 12 Aug 2019 13:27:16 -0400
|
||||
Subject: [PATCH] Fix include order between config.h and stat.h
|
||||
|
||||
At least on Arch linux ARM, the definition of struct stat in stat.h depends
|
||||
on __USE_FILE_OFFSET64. This symbol comes from config.h when defined,
|
||||
therefore config.h must always be included before stat.h. Fix all
|
||||
occurrences where the order is wrong by moving config.h to the top.
|
||||
|
||||
This fixes the client side error "Stale file handle" when mounting from
|
||||
a server running Arch Linux ARM.
|
||||
|
||||
Signed-off-by: Zoltan Karcagi <zkr7432@gmail.com>
|
||||
Signed-off-by: Steve Dickson <steved@redhat.com>
|
||||
|
||||
Upstream-Status: Backport
|
||||
[http://git.linux-nfs.org/?p=steved/nfs-utils.git;a=commit;h=2fbc62e2a13fc22b6ae4910e295a2c10fb790486]
|
||||
|
||||
Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
|
||||
---
|
||||
support/misc/nfsd_path.c | 5 ++++-
|
||||
support/misc/xstat.c | 5 ++++-
|
||||
support/nfs/conffile.c | 8 +++++++-
|
||||
utils/blkmapd/device-discovery.c | 8 ++++----
|
||||
utils/idmapd/idmapd.c | 8 ++++----
|
||||
5 files changed, 23 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/support/misc/nfsd_path.c b/support/misc/nfsd_path.c
|
||||
index 84e4802..f078a66 100644
|
||||
--- a/support/misc/nfsd_path.c
|
||||
+++ b/support/misc/nfsd_path.c
|
||||
@@ -1,3 +1,7 @@
|
||||
+#ifdef HAVE_CONFIG_H
|
||||
+#include <config.h>
|
||||
+#endif
|
||||
+
|
||||
#include <errno.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
@@ -5,7 +9,6 @@
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
-#include "config.h"
|
||||
#include "conffile.h"
|
||||
#include "xmalloc.h"
|
||||
#include "xlog.h"
|
||||
diff --git a/support/misc/xstat.c b/support/misc/xstat.c
|
||||
index fa04788..4c997ee 100644
|
||||
--- a/support/misc/xstat.c
|
||||
+++ b/support/misc/xstat.c
|
||||
@@ -1,3 +1,7 @@
|
||||
+#ifdef HAVE_CONFIG_H
|
||||
+#include <config.h>
|
||||
+#endif
|
||||
+
|
||||
#include <errno.h>
|
||||
#include <sys/types.h>
|
||||
#include <fcntl.h>
|
||||
@@ -5,7 +9,6 @@
|
||||
#include <sys/sysmacros.h>
|
||||
#include <unistd.h>
|
||||
|
||||
-#include "config.h"
|
||||
#include "xstat.h"
|
||||
|
||||
#ifdef HAVE_FSTATAT
|
||||
diff --git a/support/nfs/conffile.c b/support/nfs/conffile.c
|
||||
index b6400be..6ba8a35 100644
|
||||
--- a/support/nfs/conffile.c
|
||||
+++ b/support/nfs/conffile.c
|
||||
@@ -500,7 +500,7 @@ conf_readfile(const char *path)
|
||||
|
||||
if ((stat (path, &sb) == 0) || (errno != ENOENT)) {
|
||||
char *new_conf_addr = NULL;
|
||||
- size_t sz = sb.st_size;
|
||||
+ off_t sz;
|
||||
int fd = open (path, O_RDONLY, 0);
|
||||
|
||||
if (fd == -1) {
|
||||
@@ -517,6 +517,11 @@ conf_readfile(const char *path)
|
||||
|
||||
/* only after we have the lock, check the file size ready to read it */
|
||||
sz = lseek(fd, 0, SEEK_END);
|
||||
+ if (sz < 0) {
|
||||
+ xlog_warn("conf_readfile: unable to determine file size: %s",
|
||||
+ strerror(errno));
|
||||
+ goto fail;
|
||||
+ }
|
||||
lseek(fd, 0, SEEK_SET);
|
||||
|
||||
new_conf_addr = malloc(sz+1);
|
||||
@@ -2162,6 +2167,7 @@ conf_write(const char *filename, const char *section, const char *arg,
|
||||
ret = 0;
|
||||
|
||||
cleanup:
|
||||
+ flush_outqueue(&inqueue, NULL);
|
||||
flush_outqueue(&outqueue, NULL);
|
||||
|
||||
if (buff)
|
||||
diff --git a/utils/blkmapd/device-discovery.c b/utils/blkmapd/device-discovery.c
|
||||
index e811703..f5f9b10 100644
|
||||
--- a/utils/blkmapd/device-discovery.c
|
||||
+++ b/utils/blkmapd/device-discovery.c
|
||||
@@ -26,6 +26,10 @@
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
+#ifdef HAVE_CONFIG_H
|
||||
+#include "config.h"
|
||||
+#endif /* HAVE_CONFIG_H */
|
||||
+
|
||||
#include <sys/sysmacros.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
@@ -51,10 +55,6 @@
|
||||
#include <errno.h>
|
||||
#include <libdevmapper.h>
|
||||
|
||||
-#ifdef HAVE_CONFIG_H
|
||||
-#include "config.h"
|
||||
-#endif /* HAVE_CONFIG_H */
|
||||
-
|
||||
#include "device-discovery.h"
|
||||
#include "xcommon.h"
|
||||
#include "nfslib.h"
|
||||
diff --git a/utils/idmapd/idmapd.c b/utils/idmapd/idmapd.c
|
||||
index 62e37b8..267acea 100644
|
||||
--- a/utils/idmapd/idmapd.c
|
||||
+++ b/utils/idmapd/idmapd.c
|
||||
@@ -34,6 +34,10 @@
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
+#ifdef HAVE_CONFIG_H
|
||||
+#include "config.h"
|
||||
+#endif /* HAVE_CONFIG_H */
|
||||
+
|
||||
#include <sys/types.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/inotify.h>
|
||||
@@ -62,10 +66,6 @@
|
||||
#include <libgen.h>
|
||||
#include <nfsidmap.h>
|
||||
|
||||
-#ifdef HAVE_CONFIG_H
|
||||
-#include "config.h"
|
||||
-#endif /* HAVE_CONFIG_H */
|
||||
-
|
||||
#include "xlog.h"
|
||||
#include "conffile.h"
|
||||
#include "queue.h"
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -32,6 +32,7 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/utils/nfs-utils/${PV}/nfs-utils-${PV}.tar.x
|
||||
file://clang-format-string.patch \
|
||||
file://0001-Makefile.am-fix-undefined-function-for-libnsm.a.patch \
|
||||
file://0001-Don-t-build-tools-with-CC_FOR_BUILD.patch \
|
||||
file://0001-Fix-include-order-between-config.h-and-stat.h.patch \
|
||||
"
|
||||
SRC_URI_append_libc-glibc = " file://0001-configure.ac-Do-not-fatalize-Wmissing-prototypes.patch"
|
||||
SRC_URI_append_libc-musl = " file://nfs-utils-musl-res_querydomain.patch"
|
||||
|
||||
Reference in New Issue
Block a user