Message ID | 20220827174633.2772165-2-ptsneves@gmail.com |
---|---|
State | New |
Headers | show |
Series | [1/2] ntirpc: Add ntirpc recipe | expand |
Thank for the replacement, but it seems like the patch isn't quite complete? The upstream statuses are all incorrect, and the recipe lacks summary/description/homepage, and has a TODO and an unknown license in it. Alex On Sat, 27 Aug 2022 at 19:46, Paulo Neves <ptsneves@gmail.com> wrote: > > nfs-ganesha is actively maintained in contrast with unfs3. glibc tests > pass with nfs-ganesha. > > Signed-off-by: Paulo Neves <ptsneves@gmail.com> > --- > meta/lib/oeqa/utils/nfs.py | 2 +- > ...ix-possible-null-pointer-dereference.patch | 40 +++++ > ...-Workaround-for-erroneous-gcc-Werror.patch | 33 ++++ > ...ke-nfsv3_optype-guarded-by-_USE_NFS3.patch | 37 ++++ > .../nfs-ganesha/nfs-ganesha/module.patch | 27 +++ > .../nfs-ganesha/nfs-ganesha_4.0.bb | 42 +++++ > ...1-Add-listen-action-for-a-tcp-socket.patch | 54 ------ > .../0001-attr-fix-utime-for-symlink.patch | 85 ---------- > ...0001-daemon.c-Libtirpc-porting-fixes.patch | 37 ---- > .../unfs3/unfs3/alternate_rpc_ports.patch | 158 ------------------ > .../unfs3/unfs3/fix_compile_warning.patch | 25 --- > ...fix_pid_race_parent_writes_child_pid.patch | 61 ------- > .../unfs3/unfs3/no-yywrap.patch | 14 -- > .../unfs3/relative_max_socket_path_len.patch | 74 -------- > .../unfs3/unfs3/rename_fh_cache.patch | 64 ------- > .../unfs3/unfs3/tcp_no_delay.patch | 56 ------- > .../unfs3/unfs3/unfs3_parallel_build.patch | 37 ---- > meta/recipes-devtools/unfs3/unfs3_git.bb | 45 ----- > 18 files changed, 180 insertions(+), 711 deletions(-) > create mode 100644 meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0001-Fix-possible-null-pointer-dereference.patch > create mode 100644 meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0002-Workaround-for-erroneous-gcc-Werror.patch > create mode 100644 meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0003-Make-nfsv3_optype-guarded-by-_USE_NFS3.patch > create mode 100644 meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/module.patch > create mode 100644 meta/recipes-connectivity/nfs-ganesha/nfs-ganesha_4.0.bb > delete mode 100644 meta/recipes-devtools/unfs3/unfs3/0001-Add-listen-action-for-a-tcp-socket.patch > delete mode 100644 meta/recipes-devtools/unfs3/unfs3/0001-attr-fix-utime-for-symlink.patch > delete mode 100644 meta/recipes-devtools/unfs3/unfs3/0001-daemon.c-Libtirpc-porting-fixes.patch > delete mode 100644 meta/recipes-devtools/unfs3/unfs3/alternate_rpc_ports.patch > delete mode 100644 meta/recipes-devtools/unfs3/unfs3/fix_compile_warning.patch > delete mode 100644 meta/recipes-devtools/unfs3/unfs3/fix_pid_race_parent_writes_child_pid.patch > delete mode 100644 meta/recipes-devtools/unfs3/unfs3/no-yywrap.patch > delete mode 100644 meta/recipes-devtools/unfs3/unfs3/relative_max_socket_path_len.patch > delete mode 100644 meta/recipes-devtools/unfs3/unfs3/rename_fh_cache.patch > delete mode 100644 meta/recipes-devtools/unfs3/unfs3/tcp_no_delay.patch > delete mode 100644 meta/recipes-devtools/unfs3/unfs3/unfs3_parallel_build.patch > delete mode 100644 meta/recipes-devtools/unfs3/unfs3_git.bb > > diff --git a/meta/lib/oeqa/utils/nfs.py b/meta/lib/oeqa/utils/nfs.py > index c1218656ce..bd947c0b88 100644 > --- a/meta/lib/oeqa/utils/nfs.py > +++ b/meta/lib/oeqa/utils/nfs.py > @@ -16,7 +16,7 @@ def unfs_server(directory, logger = None): > unfs_sysroot = get_bb_var("RECIPE_SYSROOT_NATIVE", "unfs3-native") > if not os.path.exists(os.path.join(unfs_sysroot, "usr", "bin", "unfsd")): > # build native tool > - bitbake("unfs3-native -c addto_recipe_sysroot") > + bitbake("nfs-ganesha-native -c addto_recipe_sysroot") > > exports = None > cmd = None > diff --git a/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0001-Fix-possible-null-pointer-dereference.patch b/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0001-Fix-possible-null-pointer-dereference.patch > new file mode 100644 > index 0000000000..b06fc8d07e > --- /dev/null > +++ b/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0001-Fix-possible-null-pointer-dereference.patch > @@ -0,0 +1,40 @@ > +From e70f112dc79263298baf7a1b92c19234b8f1e506 Mon Sep 17 00:00:00 2001 > +From: Paulo Neves <ptsneves@gmail.com> > +Date: Tue, 23 Aug 2022 14:56:44 +0200 > +Subject: [PATCH] Fix possible null pointer dereference > + > +If logging is enabled on nfs3_lookup, name is NULL initialized > +and used. Assign name to a valid location before it is used. > + > +Upstream-Status: Pending [1] > + > +[1] https://github.com/nfs-ganesha/nfs-ganesha/pull/846 > + > +Change-Id: Ia1a922a1d34268a7d0b5ba97293e647ef07f8b3a > +Signed-off-by: Paulo Neves <ptsneves@gmail.com> > + > +--- > + src/Protocols/NFS/nfs3_lookup.c | 3 +-- > + 1 file changed, 1 insertion(+), 2 deletions(-) > + > +diff --git a/src/Protocols/NFS/nfs3_lookup.c b/src/Protocols/NFS/nfs3_lookup.c > +index da65769..97c9603 100644 > +--- a/src/Protocols/NFS/nfs3_lookup.c > ++++ b/src/Protocols/NFS/nfs3_lookup.c > +@@ -74,6 +74,7 @@ int nfs3_lookup(nfs_arg_t *arg, struct svc_req *req, nfs_res_t *res) > + */ > + fsal_prepare_attrs(&attrs, ATTRS_NFS3 | ATTR_RDATTR_ERR); > + > ++ name = arg->arg_lookup3.what.name; > + LogNFS3_Operation(COMPONENT_NFSPROTO, req, &arg->arg_lookup3.what.dir, > + " name: %s", name); > + > +@@ -89,8 +90,6 @@ int nfs3_lookup(nfs_arg_t *arg, struct svc_req *req, nfs_res_t *res) > + goto out; > + } > + > +- name = arg->arg_lookup3.what.name; > +- > + fsal_status = fsal_lookup(obj_dir, name, &obj_file, &attrs); > + > + if (FSAL_IS_ERROR(fsal_status)) { > diff --git a/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0002-Workaround-for-erroneous-gcc-Werror.patch b/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0002-Workaround-for-erroneous-gcc-Werror.patch > new file mode 100644 > index 0000000000..4eaae2493a > --- /dev/null > +++ b/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0002-Workaround-for-erroneous-gcc-Werror.patch > @@ -0,0 +1,33 @@ > +From b8fa32c779b968fbbbe5d5dcaafa664b98cec81c Mon Sep 17 00:00:00 2001 > +From: Paulo Neves <ptsneves@gmail.com> > +Date: Tue, 23 Aug 2022 14:59:19 +0200 > +Subject: [PATCH] Workaround for erroneous gcc Werror. > + > +gcc incorrectly decides that pos_len and pos_end are used > +unninitialized. It is incorrect because the condition of their > +use is the same as their early initialization. Apparently > +gcc does not pick this fact and with Werror, emits an error > + > +Upstream-Status: Inappropriate [reason] > + > +Change-Id: I30a345483b5a4bc4b5ceb46badaec3a9d27d1782 > +Signed-off-by: Paulo Neves <ptsneves@gmail.com> > + > +--- > + src/Protocols/NFS/nfs_proto_tools.c | 3 ++- > + 1 file changed, 2 insertions(+), 1 deletion(-) > + > +diff --git a/src/Protocols/NFS/nfs_proto_tools.c b/src/Protocols/NFS/nfs_proto_tools.c > +index d0f628d..a741482 100644 > +--- a/src/Protocols/NFS/nfs_proto_tools.c > ++++ b/src/Protocols/NFS/nfs_proto_tools.c > +@@ -3688,7 +3688,8 @@ bool xdr_fattr4_encode(XDR *xdrs, struct xdr_attrs_args *args, > + struct bitmap4 bitmap_encoded; > + struct bitmap4 *bitmap; > + /* Remember where we put the length of the attr data */ > +- u_int pos_len, pos_end; > ++ u_int pos_len = 0; > ++ u_int pos_end = 0; > + uint32_t attr_len = 0; > + > + bitmap = attr_bitmap != NULL ? attr_bitmap : &bitmap_encoded; > diff --git a/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0003-Make-nfsv3_optype-guarded-by-_USE_NFS3.patch b/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0003-Make-nfsv3_optype-guarded-by-_USE_NFS3.patch > new file mode 100644 > index 0000000000..ee89ed5628 > --- /dev/null > +++ b/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0003-Make-nfsv3_optype-guarded-by-_USE_NFS3.patch > @@ -0,0 +1,37 @@ > +From 48086cb311e37ea58de60352609e270be62ee7e8 Mon Sep 17 00:00:00 2001 > +From: Paulo Neves <ptsneves@gmail.com> > +Date: Tue, 23 Aug 2022 22:59:46 +0200 > +Subject: [PATCH] Make nfsv3_optype guarded by _USE_NFS3 > + > +-Wunused-variable will trigger when NFS3 is not enabled. > + > +Upstream-Status: Pending [1] > + > +[1] https://github.com/nfs-ganesha/nfs-ganesha/pull/846 > + > +Change-Id: Ib1fab2e1a59b834cda8317b2a3450e3c19437975 > +Signed-off-by: Paulo Neves <ptsneves@gmail.com> > + > +--- > + src/support/server_stats.c | 3 +++ > + 1 file changed, 3 insertions(+) > + > +diff --git a/src/support/server_stats.c b/src/support/server_stats.c > +index 19a8cac..a92b035 100644 > +--- a/src/support/server_stats.c > ++++ b/src/support/server_stats.c > +@@ -246,11 +246,14 @@ enum proto_op_type { > + LAYOUT_OP > + }; > + > ++#ifdef _USE_NFS3 > + static const uint32_t nfsv3_optype[NFS_V3_NB_COMMAND] = { > + [NFSPROC3_READ] = READ_OP, > + [NFSPROC3_WRITE] = WRITE_OP, > + }; > + > ++#endif > ++ > + static const uint32_t nfsv40_optype[NFS_V40_NB_OPERATION] = { > + [NFS4_OP_READ] = READ_OP, > + [NFS4_OP_WRITE] = WRITE_OP, > diff --git a/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/module.patch b/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/module.patch > new file mode 100644 > index 0000000000..e096afe4ce > --- /dev/null > +++ b/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/module.patch > @@ -0,0 +1,27 @@ > +From 4d8ec5e1b04455b3f6ca40743a298e16a57cfaa4 Mon Sep 17 00:00:00 2001 > +From: Ross Burton <ross@burtonini.com> > +Date: Fri, 5 Oct 2018 15:12:46 +0100 > +Subject: [PATCH] Install fsalmem as a module > + > +Upstream-Status: Submitted [https://github.com/nfs-ganesha/nfs-ganesha/pull/354] > +Signed-off-by: Ross Burton <ross.burton@intel.com> > + > +This isn't a shared library, it's a module. > + > +--- > + src/FSAL/FSAL_MEM/CMakeLists.txt | 2 +- > + 1 file changed, 1 insertion(+), 1 deletion(-) > + > +diff --git a/src/FSAL/FSAL_MEM/CMakeLists.txt b/src/FSAL/FSAL_MEM/CMakeLists.txt > +index 0f30fff..a9191ae 100644 > +--- a/src/FSAL/FSAL_MEM/CMakeLists.txt > ++++ b/src/FSAL/FSAL_MEM/CMakeLists.txt > +@@ -14,7 +14,7 @@ SET(fsalmem_LIB_SRCS > + mem_up.c > + ) > + > +-add_library(fsalmem SHARED ${fsalmem_LIB_SRCS}) > ++add_library(fsalmem MODULE ${fsalmem_LIB_SRCS}) > + add_sanitizers(fsalmem) > + > + target_link_libraries(fsalmem > diff --git a/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha_4.0.bb b/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha_4.0.bb > new file mode 100644 > index 0000000000..693fdf3777 > --- /dev/null > +++ b/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha_4.0.bb > @@ -0,0 +1,42 @@ > +# TODO: review licenses > +LICENSE = "LGPL-3.0-only & Unknown" > +LIC_FILES_CHKSUM = "file://src/LICENSE.txt;md5=e6a600fd5e1d9cbde2d983680233ad02 \ > + file://src/cidr/LICENSE;md5=ab952b9c4b37753b18d79f305e8d8593" > + > +SRC_URI = "https://download.nfs-ganesha.org/4/4.0/nfs-ganesha-4.0.tar.gz \ > + file://module.patch \ > + file://0001-Fix-possible-null-pointer-dereference.patch \ > + file://0002-Workaround-for-erroneous-gcc-Werror.patch \ > + file://0003-Make-nfsv3_optype-guarded-by-_USE_NFS3.patch \ > + " > +SRC_URI[sha256sum] = "7a7214f0cec054f2dd45a44c107f02812c1478730c4c85681d1bfe7ca1e64f8c" > + > +DEPENDS = "flex-native bison-native ntirpc util-linux" > + > +inherit cmake pkgconfig > + > +PACKAGECONFIG[dbus] = "-DUSE_DBUS=ON,-DUSE_DBUS=OFF,dbus" > +PACKAGECONFIG[nfsidmap] = "-DUSE_NFSIDMAP=ON,-DUSE_NFSIDMAP=OFF,nfs-utils" > +PACKAGECONFIG[nfsv3] = "-DUSE_NFS3=ON,-DUSE_NFS3=OFF" > +PACKAGECONFIG[winbind] = "-D_MSPAC_SUPPORT=true,-D_MSPAC_SUPPORT=false,samba" > +PACKAGECONFIG[lttng] = "-DUSE_LTTNG=ON,-DUSE_LTTNG=OFF,lttng-ust liburcu" > +PACKAGECONFIG[acl] = "-DUSE_ACL_MAPPING=ON,USE_ACL_MAPPING=OFF,acl" > +PACKAGECONFIG[jemalloc] = ",,jemalloc" > + > + > +OECMAKE_SOURCEPATH = "${S}/src" > + > +EXTRA_OECMAKE += "-DUSE_SYSTEM_NTIRPC=ON" > +EXTRA_OECMAKE += "-DUSE_GSS=OFF" > + > +# Sort out the brain-dead cmake file > +# (https://github.com/nfs-ganesha/ntirpc/issues/150) > +do_install:append() { > + if [ "${prefix}/lib64" != "${libdir}" -a -d ${D}${prefix}/lib64 ]; then > + mv ${D}${prefix}/lib64 ${D}${libdir} > + fi > +} > + > +FILES:${PN} += "${libdir}/ganesha/*.so" > + > +BBCLASSEXTEND = "native nativesdk" > diff --git a/meta/recipes-devtools/unfs3/unfs3/0001-Add-listen-action-for-a-tcp-socket.patch b/meta/recipes-devtools/unfs3/unfs3/0001-Add-listen-action-for-a-tcp-socket.patch > deleted file mode 100644 > index e9b9d3df46..0000000000 > --- a/meta/recipes-devtools/unfs3/unfs3/0001-Add-listen-action-for-a-tcp-socket.patch > +++ /dev/null > @@ -1,54 +0,0 @@ > -From b42ab8e1aca951dd06c113159491b3fd5cf06f2e Mon Sep 17 00:00:00 2001 > -From: Haiqing Bai <Haiqing.Bai@windriver.com> > -Date: Thu, 24 Oct 2019 09:39:04 +0800 > -Subject: [PATCH] Add "listen" action for a tcp socket which does not call > - 'listen' after 'bind' > - > -It is found that /usr/bin/unfsd customus 100% cpu after starting qemu with 'nfs' > -option, and below lots of error messages shows when strace the process: > - > -poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND},{fd=4, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}, > -{fd=5, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND},{fd=6, events =POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], > -4, 2000) = 2 ([{fd=4, revents=POLLHUP},{fd=6, revents=POLLHUP}]) > -accept(4, 0x7ffd5e6dddc0, [128]) = -1 EINVAL (Invalid argument) > -accept(6, 0x7ffd5e6dddc0, [128]) = -1 EINVAL (Invalid argument) > - > -% time seconds usecs/call calls errors syscall > ------- ----------- ----------- --------- --------- ---------------- > - 70.87 0.005392 0 513886 513886 accept > - 29.13 0.002216 0 256943 poll > - 0.00 0.000000 0 4 read > - > -The root cause is that 'listen' is not called for the binded > -socket. The depended libtipc does not call 'listen' if found > -the incomming socket is binded, so 'accept' reports the error > -in the 'for' loop and cpu consumed. > - > -Upstream-Status: Pending > - > -Signed-off-by: Haiqing Bai <Haiqing.Bai@windriver.com> > ---- > - daemon.c | 7 +++++++ > - 1 file changed, 7 insertions(+) > - > -diff --git a/daemon.c b/daemon.c > -index 028a181..4c85903 100644 > ---- a/daemon.c > -+++ b/daemon.c > -@@ -814,6 +814,13 @@ static SVCXPRT *create_tcp_transport(unsigned int port) > - fprintf(stderr, "Couldn't bind to tcp port %d\n", port); > - exit(1); > - } > -+ > -+ if (listen(sock, SOMAXCONN) < 0) { > -+ perror("listen"); > -+ fprintf(stderr, "Couldn't listen on the address \n"); > -+ close(sock); > -+ exit(1); > -+ } > - } > - > - transp = svctcp_create(sock, 0, 0); > --- > -1.9.1 > - > diff --git a/meta/recipes-devtools/unfs3/unfs3/0001-attr-fix-utime-for-symlink.patch b/meta/recipes-devtools/unfs3/unfs3/0001-attr-fix-utime-for-symlink.patch > deleted file mode 100644 > index 6957d102b8..0000000000 > --- a/meta/recipes-devtools/unfs3/unfs3/0001-attr-fix-utime-for-symlink.patch > +++ /dev/null > @@ -1,85 +0,0 @@ > -From 3f4fcb62661059bad77a2e957b4621137797bc2f Mon Sep 17 00:00:00 2001 > -From: Rui Wang <rui.wang@windriver.com> > -Date: Fri, 15 Jun 2018 14:19:10 +0800 > -Subject: [PATCH] attr: fix utime for symlink > - > -unfs3 has an old defect that it can not change the timestamps of a > -symlink file because it only uses utime(), which will follow the > -symlink. This will not cause an error if the symlink points to an > -existent file. But under some special situation, such as installing > -a rpm package, rpm tool will create the symlink first and try to > -modify the timestamps of it, when the target file is non-existent. > -This will cause an ESTALE error. Making rpm tool ignore this error > -is a solution, but not the best one. An acceptable approach is > -Making unfs3 support lutimes(), which can modify the symlink file > -itself. Considering not every system support this function, so a > -function checking is necessary. > - > -Upstream-Status: Submitted [https://sourceforge.net/p/unfs3/bugs/12/] > - > -Signed-off-by: Rui Wang <rui.wang@windriver.com> > ---- > - attr.c | 15 +++++++++++---- > - backend_unix.h | 2 ++ > - configure.ac | 1 + > - 3 files changed, 14 insertions(+), 4 deletions(-) > - > -diff --git a/attr.c b/attr.c > -index 73e5c75..427d0e2 100644 > ---- a/attr.c > -+++ b/attr.c > -@@ -280,7 +280,7 @@ post_op_attr get_post_cached(struct svc_req * req) > - static nfsstat3 set_time(const char *path, backend_statstruct buf, sattr3 new) > - { > - time_t new_atime, new_mtime; > -- struct utimbuf utim; > -+ struct timeval stamps[2]; > - int res; > - > - /* set atime and mtime */ > -@@ -302,10 +302,17 @@ static nfsstat3 set_time(const char *path, backend_statstruct buf, sattr3 new) > - else /* DONT_CHANGE */ > - new_mtime = buf.st_mtime; > - > -- utim.actime = new_atime; > -- utim.modtime = new_mtime; > -+ stamps[0].tv_sec = new_atime; > -+ stamps[0].tv_usec = 0; > -+ stamps[1].tv_sec = new_mtime; > -+ stamps[1].tv_usec = 0; > -+ > -+#if HAVE_LUTIMES > -+ res = backend_lutimes(path, stamps); > -+#else > -+ res = backend_utimes(path, stamps); > -+#endif > - > -- res = backend_utime(path, &utim); > - if (res == -1) > - return setattr_err(); > - } > -diff --git a/backend_unix.h b/backend_unix.h > -index fbc2af3..813ffd3 100644 > ---- a/backend_unix.h > -+++ b/backend_unix.h > -@@ -61,6 +61,8 @@ > - #define backend_symlink symlink > - #define backend_truncate truncate > - #define backend_utime utime > -+#define backend_utimes utimes > -+#define backend_lutimes lutimes > - #define backend_statstruct struct stat > - #define backend_dirstream DIR > - #define backend_statvfsstruct struct statvfs > -diff --git a/configure.ac b/configure.ac > -index aeec598..ea7f167 100644 > ---- a/configure.ac > -+++ b/configure.ac > -@@ -37,6 +37,7 @@ AC_CHECK_FUNCS(setresuid setresgid) > - AC_CHECK_FUNCS(vsyslog) > - AC_CHECK_FUNCS(lchown) > - AC_CHECK_FUNCS(setgroups) > -+AC_CHECK_FUNCS(lutimes) > - UNFS3_SOLARIS_RPC > - UNFS3_PORTMAP_DEFINE > - UNFS3_COMPILE_WARNINGS > diff --git a/meta/recipes-devtools/unfs3/unfs3/0001-daemon.c-Libtirpc-porting-fixes.patch b/meta/recipes-devtools/unfs3/unfs3/0001-daemon.c-Libtirpc-porting-fixes.patch > deleted file mode 100644 > index 6eee6748f9..0000000000 > --- a/meta/recipes-devtools/unfs3/unfs3/0001-daemon.c-Libtirpc-porting-fixes.patch > +++ /dev/null > @@ -1,37 +0,0 @@ > -From c7a2a65d6c2a433312540c207860740d6e4e7629 Mon Sep 17 00:00:00 2001 > -From: Khem Raj <raj.khem@gmail.com> > -Date: Sun, 11 Mar 2018 17:32:54 -0700 > -Subject: [PATCH] daemon.c: Libtirpc porting fixes > - > -Signed-off-by: Khem Raj <raj.khem@gmail.com> > ---- > -Upstream-Status: Pending > - > - daemon.c | 4 ++-- > - 1 file changed, 2 insertions(+), 2 deletions(-) > - > -diff --git a/daemon.c b/daemon.c > -index 22f30f6..028a181 100644 > ---- a/daemon.c > -+++ b/daemon.c > -@@ -117,7 +117,7 @@ void logmsg(int prio, const char *fmt, ...) > - */ > - struct in_addr get_remote(struct svc_req *rqstp) > - { > -- return (svc_getcaller(rqstp->rq_xprt))->sin_addr; > -+ return ((struct sockaddr_in*)svc_getcaller(rqstp->rq_xprt))->sin_addr; > - } > - > - /* > -@@ -125,7 +125,7 @@ struct in_addr get_remote(struct svc_req *rqstp) > - */ > - short get_port(struct svc_req *rqstp) > - { > -- return (svc_getcaller(rqstp->rq_xprt))->sin_port; > -+ return ((struct sockaddr_in*)svc_getcaller(rqstp->rq_xprt))->sin_port; > - } > - > - /* > --- > -2.16.2 > - > diff --git a/meta/recipes-devtools/unfs3/unfs3/alternate_rpc_ports.patch b/meta/recipes-devtools/unfs3/unfs3/alternate_rpc_ports.patch > deleted file mode 100644 > index ff745d4774..0000000000 > --- a/meta/recipes-devtools/unfs3/unfs3/alternate_rpc_ports.patch > +++ /dev/null > @@ -1,158 +0,0 @@ > -Add ability to specify rcp port numbers > - > -In order to run more than one unfs server on a host system, you must > -be able to specify alternate rpc port numbers. > - > -Jason Wessel <jason.wessel@windriver.com> > - > -Upstream-Status: Submitted http://sourceforge.net/p/unfs3/bugs/5/ > - > ---- > - daemon.c | 44 +++++++++++++++++++++++++++++++------------- > - mount.c | 4 ++-- > - 2 files changed, 33 insertions(+), 15 deletions(-) > - > ---- a/daemon.c > -+++ b/daemon.c > -@@ -78,6 +78,8 @@ int opt_testconfig = FALSE; > - struct in_addr opt_bind_addr; > - int opt_readable_executables = FALSE; > - char *opt_pid_file = NULL; > -+int nfs_prog = NFS3_PROGRAM; > -+int mount_prog = MOUNTPROG; > - > - /* Register with portmapper? */ > - int opt_portmapper = TRUE; > -@@ -206,7 +208,7 @@ static void parse_options(int argc, char > - { > - > - int opt = 0; > -- char *optstring = "bcC:de:hl:m:n:prstTuwi:"; > -+ char *optstring = "bcC:de:hl:m:n:prstTuwi:x:y:"; > - > - while (opt != -1) { > - opt = getopt(argc, argv, optstring); > -@@ -261,8 +263,24 @@ static void parse_options(int argc, char > - printf > - ("\t-r report unreadable executables as readable\n"); > - printf("\t-T test exports file and exit\n"); > -+ printf("\t-x <port> alternate NFS RPC port\n"); > -+ printf("\t-y <port> alternate MOUNTD RPC port\n"); > - exit(0); > - break; > -+ case 'x': > -+ nfs_prog = strtol(optarg, NULL, 10); > -+ if (nfs_prog == 0) { > -+ fprintf(stderr, "Invalid NFS RPC port\n"); > -+ exit(1); > -+ } > -+ break; > -+ case 'y': > -+ mount_prog = strtol(optarg, NULL, 10); > -+ if (mount_prog == 0) { > -+ fprintf(stderr, "Invalid MOUNTD RPC port\n"); > -+ exit(1); > -+ } > -+ break; > - case 'l': > - opt_bind_addr.s_addr = inet_addr(optarg); > - if (opt_bind_addr.s_addr == (unsigned) -1) { > -@@ -347,12 +365,12 @@ void daemon_exit(int error) > - #endif /* WIN32 */ > - > - if (opt_portmapper) { > -- svc_unregister(MOUNTPROG, MOUNTVERS1); > -- svc_unregister(MOUNTPROG, MOUNTVERS3); > -+ svc_unregister(mount_prog, MOUNTVERS1); > -+ svc_unregister(mount_prog, MOUNTVERS3); > - } > - > - if (opt_portmapper) { > -- svc_unregister(NFS3_PROGRAM, NFS_V3); > -+ svc_unregister(nfs_prog, NFS_V3); > - } > - > - if (error == SIGSEGV) > -@@ -657,13 +675,13 @@ static void mountprog_3(struct svc_req * > - static void register_nfs_service(SVCXPRT * udptransp, SVCXPRT * tcptransp) > - { > - if (opt_portmapper) { > -- pmap_unset(NFS3_PROGRAM, NFS_V3); > -+ pmap_unset(nfs_prog, NFS_V3); > - } > - > - if (udptransp != NULL) { > - /* Register NFS service for UDP */ > - if (!svc_register > -- (udptransp, NFS3_PROGRAM, NFS_V3, nfs3_program_3, > -+ (udptransp, nfs_prog, NFS_V3, nfs3_program_3, > - opt_portmapper ? IPPROTO_UDP : 0)) { > - fprintf(stderr, "%s\n", > - "unable to register (NFS3_PROGRAM, NFS_V3, udp)."); > -@@ -674,7 +692,7 @@ static void register_nfs_service(SVCXPRT > - if (tcptransp != NULL) { > - /* Register NFS service for TCP */ > - if (!svc_register > -- (tcptransp, NFS3_PROGRAM, NFS_V3, nfs3_program_3, > -+ (tcptransp, nfs_prog, NFS_V3, nfs3_program_3, > - opt_portmapper ? IPPROTO_TCP : 0)) { > - fprintf(stderr, "%s\n", > - "unable to register (NFS3_PROGRAM, NFS_V3, tcp)."); > -@@ -686,14 +704,14 @@ static void register_nfs_service(SVCXPRT > - static void register_mount_service(SVCXPRT * udptransp, SVCXPRT * tcptransp) > - { > - if (opt_portmapper) { > -- pmap_unset(MOUNTPROG, MOUNTVERS1); > -- pmap_unset(MOUNTPROG, MOUNTVERS3); > -+ pmap_unset(mount_prog, MOUNTVERS1); > -+ pmap_unset(mount_prog, MOUNTVERS3); > - } > - > - if (udptransp != NULL) { > - /* Register MOUNT service (v1) for UDP */ > - if (!svc_register > -- (udptransp, MOUNTPROG, MOUNTVERS1, mountprog_3, > -+ (udptransp, mount_prog, MOUNTVERS1, mountprog_3, > - opt_portmapper ? IPPROTO_UDP : 0)) { > - fprintf(stderr, "%s\n", > - "unable to register (MOUNTPROG, MOUNTVERS1, udp)."); > -@@ -702,7 +720,7 @@ static void register_mount_service(SVCXP > - > - /* Register MOUNT service (v3) for UDP */ > - if (!svc_register > -- (udptransp, MOUNTPROG, MOUNTVERS3, mountprog_3, > -+ (udptransp, mount_prog, MOUNTVERS3, mountprog_3, > - opt_portmapper ? IPPROTO_UDP : 0)) { > - fprintf(stderr, "%s\n", > - "unable to register (MOUNTPROG, MOUNTVERS3, udp)."); > -@@ -713,7 +731,7 @@ static void register_mount_service(SVCXP > - if (tcptransp != NULL) { > - /* Register MOUNT service (v1) for TCP */ > - if (!svc_register > -- (tcptransp, MOUNTPROG, MOUNTVERS1, mountprog_3, > -+ (tcptransp, mount_prog, MOUNTVERS1, mountprog_3, > - opt_portmapper ? IPPROTO_TCP : 0)) { > - fprintf(stderr, "%s\n", > - "unable to register (MOUNTPROG, MOUNTVERS1, tcp)."); > -@@ -722,7 +740,7 @@ static void register_mount_service(SVCXP > - > - /* Register MOUNT service (v3) for TCP */ > - if (!svc_register > -- (tcptransp, MOUNTPROG, MOUNTVERS3, mountprog_3, > -+ (tcptransp, mount_prog, MOUNTVERS3, mountprog_3, > - opt_portmapper ? IPPROTO_TCP : 0)) { > - fprintf(stderr, "%s\n", > - "unable to register (MOUNTPROG, MOUNTVERS3, tcp)."); > ---- a/mount.c > -+++ b/mount.c > -@@ -155,8 +155,8 @@ mountres3 *mountproc_mnt_3_svc(dirpath * > - /* error out if not version 3 */ > - if (rqstp->rq_vers != 3) { > - logmsg(LOG_INFO, > -- "%s attempted mount with unsupported protocol version", > -- inet_ntoa(get_remote(rqstp))); > -+ "%s attempted mount with unsupported protocol version: %i", > -+ inet_ntoa(get_remote(rqstp)), rqstp->rq_vers); > - result.fhs_status = MNT3ERR_INVAL; > - return &result; > - } > diff --git a/meta/recipes-devtools/unfs3/unfs3/fix_compile_warning.patch b/meta/recipes-devtools/unfs3/unfs3/fix_compile_warning.patch > deleted file mode 100644 > index aada014117..0000000000 > --- a/meta/recipes-devtools/unfs3/unfs3/fix_compile_warning.patch > +++ /dev/null > @@ -1,25 +0,0 @@ > -daemon.c: Check exit code of chdir() > - > -Stop the compile warning and fix the code to act on a chdir() failure. > -If this one does fail something is very, very wrong. > - > -Signed-off-by: Jason Wessel <jason.wessel@windriver.com> > - > -Upstream-Status: Submitted http://sourceforge.net/p/unfs3/bugs/5/ > - > ---- > - daemon.c | 3 ++- > - 1 file changed, 2 insertions(+), 1 deletion(-) > - > ---- a/daemon.c > -+++ b/daemon.c > -@@ -964,7 +964,8 @@ int main(int argc, char **argv) > - sigaction(SIGALRM, &act, NULL); > - > - /* don't make directory we started in busy */ > -- chdir("/"); > -+ if(chdir("/") < 0) > -+ daemon_exit(0); > - > - /* detach from terminal */ > - if (opt_detach) { > diff --git a/meta/recipes-devtools/unfs3/unfs3/fix_pid_race_parent_writes_child_pid.patch b/meta/recipes-devtools/unfs3/unfs3/fix_pid_race_parent_writes_child_pid.patch > deleted file mode 100644 > index 46b187e5f3..0000000000 > --- a/meta/recipes-devtools/unfs3/unfs3/fix_pid_race_parent_writes_child_pid.patch > +++ /dev/null > @@ -1,61 +0,0 @@ > -daemon.c: Fix race window for writing of the pid file > - > -The parent process should write the pid file such that the pid file > -will can be checked immediately following exit of the fork from the > -parent. > - > -This allows external monitoring applications to watch the daemon > -without having to add sleep calls to wait for the pid file be written > -on a busy system. > - > -Signed-off-by: Jason Wessel <jason.wessel@windriver.com> > - > -Upstream-Status: Submitted http://sourceforge.net/p/unfs3/bugs/5/ > - > ---- > - daemon.c | 12 +++++++++--- > - 1 file changed, 9 insertions(+), 3 deletions(-) > - > ---- a/daemon.c > -+++ b/daemon.c > -@@ -153,7 +153,7 @@ int get_socket_type(struct svc_req *rqst > - /* > - * write current pid to a file > - */ > --static void create_pid_file(void) > -+static void create_pid_file(int pid) > - { > - char buf[16]; > - int fd, res, len; > -@@ -175,7 +175,7 @@ static void create_pid_file(void) > - } > - #endif > - > -- sprintf(buf, "%i\n", backend_getpid()); > -+ sprintf(buf, "%i\n", pid); > - len = strlen(buf); > - > - res = backend_pwrite(fd, buf, len, 0); > -@@ -970,6 +970,10 @@ int main(int argc, char **argv) > - fprintf(stderr, "could not fork into background\n"); > - daemon_exit(0); > - } > -+ if (pid) > -+ create_pid_file(pid); > -+ } else { > -+ create_pid_file(backend_getpid()); > - } > - #endif /* WIN32 */ > - > -@@ -1006,8 +1010,10 @@ int main(int argc, char **argv) > - /* no umask to not screw up create modes */ > - umask(0); > - > -+#ifdef WIN32 > - /* create pid file if wanted */ > -- create_pid_file(); > -+ create_pid_file(backend_getpid()); > -+#endif > - > - /* initialize internal stuff */ > - fh_cache_init(); > diff --git a/meta/recipes-devtools/unfs3/unfs3/no-yywrap.patch b/meta/recipes-devtools/unfs3/unfs3/no-yywrap.patch > deleted file mode 100644 > index e3496814d8..0000000000 > --- a/meta/recipes-devtools/unfs3/unfs3/no-yywrap.patch > +++ /dev/null > @@ -1,14 +0,0 @@ > -Upstream-Status: Backport [https://github.com/unfs3/unfs3/commit/3fa0568e6ef96e045286afe18444bc28fe93962b] > - > -diff --git a/Config/exports.l b/Config/exports.l > -index 662603c..7e7c4fc 100644 > ---- a/Config/exports.l > -+++ b/Config/exports.l > -@@ -50,6 +50,7 @@ OLDNET {IP}"/"{IP} > - > - %option nounput > - %option noinput > -+%option noyywrap > - > - %% > - > diff --git a/meta/recipes-devtools/unfs3/unfs3/relative_max_socket_path_len.patch b/meta/recipes-devtools/unfs3/unfs3/relative_max_socket_path_len.patch > deleted file mode 100644 > index 219dd35aec..0000000000 > --- a/meta/recipes-devtools/unfs3/unfs3/relative_max_socket_path_len.patch > +++ /dev/null > @@ -1,74 +0,0 @@ > -nfs.c: Allow max sa.sun_path for a localdomain socket with the user nfs-server > - > -There is a hard limit for the kernel of 108 characters for a > -localdomain socket name. To avoid problems with the user nfs > -server it should maximize the number of characters by using > -a relative path on the server side. > - > -Previously the nfs-server used the absolute path name passed to > -the sa.sunpath arg for binding the socket and this has caused > -problems for both the X server and UST binaries which make > -heavy use of named sockets with long names. > - > -Signed-off-by: Jason Wessel <jason.wessel@windriver.com> > - > -Upstream-Status: Submitted http://sourceforge.net/p/unfs3/bugs/5/ > - > ---- > - nfs.c | 29 +++++++++++++++++++++++++++-- > - 1 file changed, 27 insertions(+), 2 deletions(-) > - > ---- a/nfs.c > -+++ b/nfs.c > -@@ -672,6 +672,7 @@ SYMLINK3res *nfsproc3_symlink_3_svc(SYML > - } > - > - #ifndef WIN32 > -+static char pathbuf_tmp[NFS_MAXPATHLEN + NFS_MAXNAMLEN + 1]; > - > - /* > - * create Unix socket > -@@ -680,17 +681,41 @@ static int mksocket(const char *path, mo > - { > - int res, sock; > - struct sockaddr_un addr; > -+ unsigned int len = strlen(path); > - > - sock = socket(PF_UNIX, SOCK_STREAM, 0); > -- addr.sun_family = AF_UNIX; > -- strcpy(addr.sun_path, path); > - res = sock; > - if (res != -1) { > -+ addr.sun_family = AF_UNIX; > -+ if (len < sizeof(addr.sun_path) -1) { > -+ strcpy(addr.sun_path, path); > -+ } else { > -+ char *ptr; > -+ res = -1; > -+ if (len >= sizeof(path)) > -+ goto out; > -+ strcpy(pathbuf_tmp, path); > -+ ptr = strrchr(pathbuf_tmp,'/'); > -+ if (ptr) { > -+ *ptr = '\0'; > -+ ptr++; > -+ if (chdir(pathbuf_tmp)) > -+ goto out; > -+ } else { > -+ ptr = pathbuf_tmp; > -+ } > -+ if (strlen(ptr) >= sizeof(addr.sun_path)) > -+ goto out; > -+ strcpy(addr.sun_path, ptr); > -+ } > - umask(~mode); > - res = > - bind(sock, (struct sockaddr *) &addr, > - sizeof(addr.sun_family) + strlen(addr.sun_path)); > - umask(0); > -+out: > -+ if (chdir("/")) > -+ fprintf(stderr, "Internal failure to chdir /\n"); > - close(sock); > - } > - return res; > diff --git a/meta/recipes-devtools/unfs3/unfs3/rename_fh_cache.patch b/meta/recipes-devtools/unfs3/unfs3/rename_fh_cache.patch > deleted file mode 100644 > index e6d89530f8..0000000000 > --- a/meta/recipes-devtools/unfs3/unfs3/rename_fh_cache.patch > +++ /dev/null > @@ -1,64 +0,0 @@ > -From: Jason Wessel <jason.wessel@windriver.com> > -Date: Sat, 23 Feb 2013 08:49:08 -0600 > -Subject: [PATCH] fh_cache: fix statle nfs handle on rename problem > - > -The following test case fails with modern linunx kernels which cache > -the renamed inode. > - > - % mkdir a;mkdir b;mv b a/;ls -l a > - ls: a/b: Stale NFS file handle > - > -The issue is that nfserver was not updating the fh_cache with the new > -location of the inode, when it moves directories. > - > -Signed-off-by: Jason Wessel <jason.wessel@windriver.com> > - > -Upstream-Status: Submitted http://sourceforge.net/p/unfs3/bugs/5/ > - > ---- > - fh_cache.c | 12 ++++++++++++ > - fh_cache.h | 1 + > - nfs.c | 2 ++ > - 3 files changed, 15 insertions(+) > - > ---- a/fh_cache.c > -+++ b/fh_cache.c > -@@ -199,6 +199,18 @@ static char *fh_cache_lookup(uint32 dev, > - } > - > - /* > -+ * update a fh inode cache for an operation like rename > -+ */ > -+void fh_cache_update(nfs_fh3 fh, char *path) > -+{ > -+ unfs3_fh_t *obj = (void *) fh.data.data_val; > -+ backend_statstruct buf; > -+ > -+ if (backend_lstat(path, &buf) != -1) { > -+ fh_cache_add(obj->dev, buf.st_ino, path); > -+ } > -+} > -+/* > - * resolve a filename into a path > - * cache-using wrapper for fh_decomp_raw > - */ > ---- a/fh_cache.h > -+++ b/fh_cache.h > -@@ -19,5 +19,6 @@ unfs3_fh_t fh_comp(const char *path, str > - unfs3_fh_t *fh_comp_ptr(const char *path, struct svc_req *rqstp, int need_dir); > - > - char *fh_cache_add(uint32 dev, uint64 ino, const char *path); > -+void fh_cache_update(nfs_fh3 fh, char *path); > - > - #endif > ---- a/nfs.c > -+++ b/nfs.c > -@@ -876,6 +876,8 @@ RENAME3res *nfsproc3_rename_3_svc(RENAME > - res = backend_rename(from_obj, to_obj); > - if (res == -1) > - result.status = rename_err(); > -+ /* Update the fh_cache with moved inode value */ > -+ fh_cache_update(argp->to.dir, to_obj); > - } > - } > - > diff --git a/meta/recipes-devtools/unfs3/unfs3/tcp_no_delay.patch b/meta/recipes-devtools/unfs3/unfs3/tcp_no_delay.patch > deleted file mode 100644 > index b3521c63eb..0000000000 > --- a/meta/recipes-devtools/unfs3/unfs3/tcp_no_delay.patch > +++ /dev/null > @@ -1,56 +0,0 @@ > -daemon.c: Add option for tcp no delay > - > -Allow the NFS tcp sockets to conditionally use TCP_NODELAY > - > -Upstream-Status: Submitted http://sourceforge.net/p/unfs3/bugs/5/ > - > ---- > - daemon.c | 9 ++++++++- > - 1 file changed, 8 insertions(+), 1 deletion(-) > - > ---- a/daemon.c > -+++ b/daemon.c > -@@ -17,6 +17,7 @@ > - #ifndef WIN32 > - #include <sys/socket.h> > - #include <netinet/in.h> > -+#include <netinet/tcp.h> > - #include <arpa/inet.h> > - #include <syslog.h> > - #else /* WIN32 */ > -@@ -75,6 +76,7 @@ unsigned int opt_mount_port = NFS_PORT; > - int opt_singleuser = FALSE; > - int opt_brute_force = FALSE; > - int opt_testconfig = FALSE; > -+int opt_tcp_nodelay = FALSE; > - struct in_addr opt_bind_addr; > - int opt_readable_executables = FALSE; > - char *opt_pid_file = NULL; > -@@ -208,7 +210,7 @@ static void parse_options(int argc, char > - { > - > - int opt = 0; > -- char *optstring = "bcC:de:hl:m:n:prstTuwi:x:y:"; > -+ char *optstring = "bcC:de:hl:m:Nn:prstTuwi:x:y:"; > - > - while (opt != -1) { > - opt = getopt(argc, argv, optstring); > -@@ -295,6 +297,9 @@ static void parse_options(int argc, char > - exit(1); > - } > - break; > -+ case 'N': > -+ opt_tcp_nodelay = TRUE; > -+ break; > - case 'n': > - opt_nfs_port = strtol(optarg, NULL, 10); > - if (opt_nfs_port == 0) { > -@@ -802,6 +807,8 @@ static SVCXPRT *create_tcp_transport(uns > - sin.sin_addr.s_addr = opt_bind_addr.s_addr; > - sock = socket(PF_INET, SOCK_STREAM, 0); > - setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (const char *) &on, sizeof(on)); > -+ if (opt_tcp_nodelay) > -+ setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on)); > - if (bind(sock, (struct sockaddr *) &sin, sizeof(struct sockaddr))) { > - perror("bind"); > - fprintf(stderr, "Couldn't bind to tcp port %d\n", port); > diff --git a/meta/recipes-devtools/unfs3/unfs3/unfs3_parallel_build.patch b/meta/recipes-devtools/unfs3/unfs3/unfs3_parallel_build.patch > deleted file mode 100644 > index 6f64dd5b3e..0000000000 > --- a/meta/recipes-devtools/unfs3/unfs3/unfs3_parallel_build.patch > +++ /dev/null > @@ -1,37 +0,0 @@ > -Fix parallel build dependency issue > - > -If building with make -j2 the lib.a will not get built in time. > - > -Jason Wessel <jason.wessel@windriver.com> > - > -Upstream-Status: Submitted http://sourceforge.net/p/unfs3/bugs/5/ > - > ---- > - Config/Makefile.in | 3 +++ > - Makefile.in | 3 ++- > - 2 files changed, 5 insertions(+), 1 deletion(-) > - > ---- a/Makefile.in > -+++ b/Makefile.in > -@@ -29,7 +29,8 @@ DESTDIR = > - > - VPATH = $(srcdir) > - > --all: subdirs unfsd$(EXEEXT) > -+all: subdirs > -+ $(MAKE) unfsd$(EXEEXT) > - > - unfsd$(EXEEXT): $(OBJS) $(CONFOBJ) $(EXTRAOBJ) > - $(CC) -o $@ $(OBJS) $(CONFOBJ) $(EXTRAOBJ) $(LDFLAGS) > ---- a/Config/Makefile.in > -+++ b/Config/Makefile.in > -@@ -16,6 +16,9 @@ lib.a: $(OBJS) > - $(AR) crs lib.a $(OBJS) > - > - y.tab.h y.tab.c: $(srcdir)/exports.y > -+y.tab.h: y.tab.c > -+ > -+y.tab.c: $(srcdir)/exports.y > - $(YACC) -d $(srcdir)/exports.y > - > - y.tab.o: y.tab.c $(srcdir)/exports.h $(top_srcdir)/nfs.h $(top_srcdir)/mount.h $(top_srcdir)/daemon.h > diff --git a/meta/recipes-devtools/unfs3/unfs3_git.bb b/meta/recipes-devtools/unfs3/unfs3_git.bb > deleted file mode 100644 > index 7a5d273851..0000000000 > --- a/meta/recipes-devtools/unfs3/unfs3_git.bb > +++ /dev/null > @@ -1,45 +0,0 @@ > -SUMMARY = "Userspace NFS server v3 protocol" > -DESCRIPTION = "UNFS3 is a user-space implementation of the NFSv3 server \ > -specification. It provides a daemon for the MOUNT and NFS protocols, which \ > -are used by NFS clients for accessing files on the server." > -HOMEPAGE = "https://github.com/unfs3/unfs3" > -SECTION = "console/network" > -LICENSE = "unfs3" > -LIC_FILES_CHKSUM = "file://LICENSE;md5=9475885294e17c0cc0067820d042792e" > - > -DEPENDS = "flex-native bison-native flex" > -DEPENDS += "libtirpc" > -DEPENDS:append:class-nativesdk = " flex-nativesdk" > - > -ASNEEDED = "" > - > -S = "${WORKDIR}/git" > -SRC_URI = "git://github.com/unfs3/unfs3.git;protocol=https;branch=master \ > - file://unfs3_parallel_build.patch \ > - file://alternate_rpc_ports.patch \ > - file://fix_pid_race_parent_writes_child_pid.patch \ > - file://fix_compile_warning.patch \ > - file://rename_fh_cache.patch \ > - file://relative_max_socket_path_len.patch \ > - file://tcp_no_delay.patch \ > - file://0001-daemon.c-Libtirpc-porting-fixes.patch \ > - file://0001-attr-fix-utime-for-symlink.patch \ > - file://0001-Add-listen-action-for-a-tcp-socket.patch \ > - file://no-yywrap.patch \ > - " > -SRCREV = "c12a5c69a8d59be6916cbd0e0f41c159f1962425" > -UPSTREAM_CHECK_GITTAGREGEX = "unfs3\-(?P<pver>.+)" > - > -PV = "0.9.22+${SRCPV}" > - > -BBCLASSEXTEND = "native nativesdk" > - > -inherit autotools > -EXTRA_OECONF:append:class-native = " --sbindir=${bindir}" > -CFLAGS:append = " -I${STAGING_INCDIR}/tirpc" > -EXTRA_OECONF:append = " LIBS=-ltirpc" > - > -# Turn off these header detects else the inode search > -# will walk entire file systems and this is a real problem > -# if you have 2 TB of files to walk in your file system > -CACHED_CONFIGUREVARS = "ac_cv_header_mntent_h=no ac_cv_header_sys_mnttab_h=no" > -- > 2.25.1 > > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#169935): https://lists.openembedded.org/g/openembedded-core/message/169935 > Mute This Topic: https://lists.openembedded.org/mt/93293558/1686489 > Group Owner: openembedded-core+owner@lists.openembedded.org > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com] > -=-=-=-=-=-=-=-=-=-=-=- >
Hello Alexander, Thank you for the review. Please see v3. On 8/27/22 20:06, Alexander Kanavin wrote: > Thank for the replacement, but it seems like the patch isn't quite > complete? The upstream statuses are all incorrect, and the recipe > lacks summary/description/homepage, and has a TODO and an unknown > license in it. > > Alex > > On Sat, 27 Aug 2022 at 19:46, Paulo Neves <ptsneves@gmail.com> wrote: >> nfs-ganesha is actively maintained in contrast with unfs3. glibc tests >> pass with nfs-ganesha. >> >> Signed-off-by: Paulo Neves <ptsneves@gmail.com> >> --- >> meta/lib/oeqa/utils/nfs.py | 2 +- >> ...ix-possible-null-pointer-dereference.patch | 40 +++++ >> ...-Workaround-for-erroneous-gcc-Werror.patch | 33 ++++ >> ...ke-nfsv3_optype-guarded-by-_USE_NFS3.patch | 37 ++++ >> .../nfs-ganesha/nfs-ganesha/module.patch | 27 +++ >> .../nfs-ganesha/nfs-ganesha_4.0.bb | 42 +++++ >> ...1-Add-listen-action-for-a-tcp-socket.patch | 54 ------ >> .../0001-attr-fix-utime-for-symlink.patch | 85 ---------- >> ...0001-daemon.c-Libtirpc-porting-fixes.patch | 37 ---- >> .../unfs3/unfs3/alternate_rpc_ports.patch | 158 ------------------ >> .../unfs3/unfs3/fix_compile_warning.patch | 25 --- >> ...fix_pid_race_parent_writes_child_pid.patch | 61 ------- >> .../unfs3/unfs3/no-yywrap.patch | 14 -- >> .../unfs3/relative_max_socket_path_len.patch | 74 -------- >> .../unfs3/unfs3/rename_fh_cache.patch | 64 ------- >> .../unfs3/unfs3/tcp_no_delay.patch | 56 ------- >> .../unfs3/unfs3/unfs3_parallel_build.patch | 37 ---- >> meta/recipes-devtools/unfs3/unfs3_git.bb | 45 ----- >> 18 files changed, 180 insertions(+), 711 deletions(-) >> create mode 100644 meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0001-Fix-possible-null-pointer-dereference.patch >> create mode 100644 meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0002-Workaround-for-erroneous-gcc-Werror.patch >> create mode 100644 meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0003-Make-nfsv3_optype-guarded-by-_USE_NFS3.patch >> create mode 100644 meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/module.patch >> create mode 100644 meta/recipes-connectivity/nfs-ganesha/nfs-ganesha_4.0.bb >> delete mode 100644 meta/recipes-devtools/unfs3/unfs3/0001-Add-listen-action-for-a-tcp-socket.patch >> delete mode 100644 meta/recipes-devtools/unfs3/unfs3/0001-attr-fix-utime-for-symlink.patch >> delete mode 100644 meta/recipes-devtools/unfs3/unfs3/0001-daemon.c-Libtirpc-porting-fixes.patch >> delete mode 100644 meta/recipes-devtools/unfs3/unfs3/alternate_rpc_ports.patch >> delete mode 100644 meta/recipes-devtools/unfs3/unfs3/fix_compile_warning.patch >> delete mode 100644 meta/recipes-devtools/unfs3/unfs3/fix_pid_race_parent_writes_child_pid.patch >> delete mode 100644 meta/recipes-devtools/unfs3/unfs3/no-yywrap.patch >> delete mode 100644 meta/recipes-devtools/unfs3/unfs3/relative_max_socket_path_len.patch >> delete mode 100644 meta/recipes-devtools/unfs3/unfs3/rename_fh_cache.patch >> delete mode 100644 meta/recipes-devtools/unfs3/unfs3/tcp_no_delay.patch >> delete mode 100644 meta/recipes-devtools/unfs3/unfs3/unfs3_parallel_build.patch >> delete mode 100644 meta/recipes-devtools/unfs3/unfs3_git.bb >> >> diff --git a/meta/lib/oeqa/utils/nfs.py b/meta/lib/oeqa/utils/nfs.py >> index c1218656ce..bd947c0b88 100644 >> --- a/meta/lib/oeqa/utils/nfs.py >> +++ b/meta/lib/oeqa/utils/nfs.py >> @@ -16,7 +16,7 @@ def unfs_server(directory, logger = None): >> unfs_sysroot = get_bb_var("RECIPE_SYSROOT_NATIVE", "unfs3-native") >> if not os.path.exists(os.path.join(unfs_sysroot, "usr", "bin", "unfsd")): >> # build native tool >> - bitbake("unfs3-native -c addto_recipe_sysroot") >> + bitbake("nfs-ganesha-native -c addto_recipe_sysroot") >> >> exports = None >> cmd = None >> diff --git a/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0001-Fix-possible-null-pointer-dereference.patch b/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0001-Fix-possible-null-pointer-dereference.patch >> new file mode 100644 >> index 0000000000..b06fc8d07e >> --- /dev/null >> +++ b/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0001-Fix-possible-null-pointer-dereference.patch >> @@ -0,0 +1,40 @@ >> +From e70f112dc79263298baf7a1b92c19234b8f1e506 Mon Sep 17 00:00:00 2001 >> +From: Paulo Neves <ptsneves@gmail.com> >> +Date: Tue, 23 Aug 2022 14:56:44 +0200 >> +Subject: [PATCH] Fix possible null pointer dereference >> + >> +If logging is enabled on nfs3_lookup, name is NULL initialized >> +and used. Assign name to a valid location before it is used. >> + >> +Upstream-Status: Pending [1] >> + >> +[1] https://github.com/nfs-ganesha/nfs-ganesha/pull/846 >> + >> +Change-Id: Ia1a922a1d34268a7d0b5ba97293e647ef07f8b3a >> +Signed-off-by: Paulo Neves <ptsneves@gmail.com> >> + >> +--- >> + src/Protocols/NFS/nfs3_lookup.c | 3 +-- >> + 1 file changed, 1 insertion(+), 2 deletions(-) >> + >> +diff --git a/src/Protocols/NFS/nfs3_lookup.c b/src/Protocols/NFS/nfs3_lookup.c >> +index da65769..97c9603 100644 >> +--- a/src/Protocols/NFS/nfs3_lookup.c >> ++++ b/src/Protocols/NFS/nfs3_lookup.c >> +@@ -74,6 +74,7 @@ int nfs3_lookup(nfs_arg_t *arg, struct svc_req *req, nfs_res_t *res) >> + */ >> + fsal_prepare_attrs(&attrs, ATTRS_NFS3 | ATTR_RDATTR_ERR); >> + >> ++ name = arg->arg_lookup3.what.name; >> + LogNFS3_Operation(COMPONENT_NFSPROTO, req, &arg->arg_lookup3.what.dir, >> + " name: %s", name); >> + >> +@@ -89,8 +90,6 @@ int nfs3_lookup(nfs_arg_t *arg, struct svc_req *req, nfs_res_t *res) >> + goto out; >> + } >> + >> +- name = arg->arg_lookup3.what.name; >> +- >> + fsal_status = fsal_lookup(obj_dir, name, &obj_file, &attrs); >> + >> + if (FSAL_IS_ERROR(fsal_status)) { >> diff --git a/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0002-Workaround-for-erroneous-gcc-Werror.patch b/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0002-Workaround-for-erroneous-gcc-Werror.patch >> new file mode 100644 >> index 0000000000..4eaae2493a >> --- /dev/null >> +++ b/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0002-Workaround-for-erroneous-gcc-Werror.patch >> @@ -0,0 +1,33 @@ >> +From b8fa32c779b968fbbbe5d5dcaafa664b98cec81c Mon Sep 17 00:00:00 2001 >> +From: Paulo Neves <ptsneves@gmail.com> >> +Date: Tue, 23 Aug 2022 14:59:19 +0200 >> +Subject: [PATCH] Workaround for erroneous gcc Werror. >> + >> +gcc incorrectly decides that pos_len and pos_end are used >> +unninitialized. It is incorrect because the condition of their >> +use is the same as their early initialization. Apparently >> +gcc does not pick this fact and with Werror, emits an error >> + >> +Upstream-Status: Inappropriate [reason] >> + >> +Change-Id: I30a345483b5a4bc4b5ceb46badaec3a9d27d1782 >> +Signed-off-by: Paulo Neves <ptsneves@gmail.com> >> + >> +--- >> + src/Protocols/NFS/nfs_proto_tools.c | 3 ++- >> + 1 file changed, 2 insertions(+), 1 deletion(-) >> + >> +diff --git a/src/Protocols/NFS/nfs_proto_tools.c b/src/Protocols/NFS/nfs_proto_tools.c >> +index d0f628d..a741482 100644 >> +--- a/src/Protocols/NFS/nfs_proto_tools.c >> ++++ b/src/Protocols/NFS/nfs_proto_tools.c >> +@@ -3688,7 +3688,8 @@ bool xdr_fattr4_encode(XDR *xdrs, struct xdr_attrs_args *args, >> + struct bitmap4 bitmap_encoded; >> + struct bitmap4 *bitmap; >> + /* Remember where we put the length of the attr data */ >> +- u_int pos_len, pos_end; >> ++ u_int pos_len = 0; >> ++ u_int pos_end = 0; >> + uint32_t attr_len = 0; >> + >> + bitmap = attr_bitmap != NULL ? attr_bitmap : &bitmap_encoded; >> diff --git a/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0003-Make-nfsv3_optype-guarded-by-_USE_NFS3.patch b/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0003-Make-nfsv3_optype-guarded-by-_USE_NFS3.patch >> new file mode 100644 >> index 0000000000..ee89ed5628 >> --- /dev/null >> +++ b/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0003-Make-nfsv3_optype-guarded-by-_USE_NFS3.patch >> @@ -0,0 +1,37 @@ >> +From 48086cb311e37ea58de60352609e270be62ee7e8 Mon Sep 17 00:00:00 2001 >> +From: Paulo Neves <ptsneves@gmail.com> >> +Date: Tue, 23 Aug 2022 22:59:46 +0200 >> +Subject: [PATCH] Make nfsv3_optype guarded by _USE_NFS3 >> + >> +-Wunused-variable will trigger when NFS3 is not enabled. >> + >> +Upstream-Status: Pending [1] >> + >> +[1] https://github.com/nfs-ganesha/nfs-ganesha/pull/846 >> + >> +Change-Id: Ib1fab2e1a59b834cda8317b2a3450e3c19437975 >> +Signed-off-by: Paulo Neves <ptsneves@gmail.com> >> + >> +--- >> + src/support/server_stats.c | 3 +++ >> + 1 file changed, 3 insertions(+) >> + >> +diff --git a/src/support/server_stats.c b/src/support/server_stats.c >> +index 19a8cac..a92b035 100644 >> +--- a/src/support/server_stats.c >> ++++ b/src/support/server_stats.c >> +@@ -246,11 +246,14 @@ enum proto_op_type { >> + LAYOUT_OP >> + }; >> + >> ++#ifdef _USE_NFS3 >> + static const uint32_t nfsv3_optype[NFS_V3_NB_COMMAND] = { >> + [NFSPROC3_READ] = READ_OP, >> + [NFSPROC3_WRITE] = WRITE_OP, >> + }; >> + >> ++#endif >> ++ >> + static const uint32_t nfsv40_optype[NFS_V40_NB_OPERATION] = { >> + [NFS4_OP_READ] = READ_OP, >> + [NFS4_OP_WRITE] = WRITE_OP, >> diff --git a/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/module.patch b/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/module.patch >> new file mode 100644 >> index 0000000000..e096afe4ce >> --- /dev/null >> +++ b/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/module.patch >> @@ -0,0 +1,27 @@ >> +From 4d8ec5e1b04455b3f6ca40743a298e16a57cfaa4 Mon Sep 17 00:00:00 2001 >> +From: Ross Burton <ross@burtonini.com> >> +Date: Fri, 5 Oct 2018 15:12:46 +0100 >> +Subject: [PATCH] Install fsalmem as a module >> + >> +Upstream-Status: Submitted [https://github.com/nfs-ganesha/nfs-ganesha/pull/354] >> +Signed-off-by: Ross Burton <ross.burton@intel.com> >> + >> +This isn't a shared library, it's a module. >> + >> +--- >> + src/FSAL/FSAL_MEM/CMakeLists.txt | 2 +- >> + 1 file changed, 1 insertion(+), 1 deletion(-) >> + >> +diff --git a/src/FSAL/FSAL_MEM/CMakeLists.txt b/src/FSAL/FSAL_MEM/CMakeLists.txt >> +index 0f30fff..a9191ae 100644 >> +--- a/src/FSAL/FSAL_MEM/CMakeLists.txt >> ++++ b/src/FSAL/FSAL_MEM/CMakeLists.txt >> +@@ -14,7 +14,7 @@ SET(fsalmem_LIB_SRCS >> + mem_up.c >> + ) >> + >> +-add_library(fsalmem SHARED ${fsalmem_LIB_SRCS}) >> ++add_library(fsalmem MODULE ${fsalmem_LIB_SRCS}) >> + add_sanitizers(fsalmem) >> + >> + target_link_libraries(fsalmem >> diff --git a/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha_4.0.bb b/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha_4.0.bb >> new file mode 100644 >> index 0000000000..693fdf3777 >> --- /dev/null >> +++ b/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha_4.0.bb >> @@ -0,0 +1,42 @@ >> +# TODO: review licenses >> +LICENSE = "LGPL-3.0-only & Unknown" >> +LIC_FILES_CHKSUM = "file://src/LICENSE.txt;md5=e6a600fd5e1d9cbde2d983680233ad02 \ >> + file://src/cidr/LICENSE;md5=ab952b9c4b37753b18d79f305e8d8593" >> + >> +SRC_URI = "https://download.nfs-ganesha.org/4/4.0/nfs-ganesha-4.0.tar.gz \ >> + file://module.patch \ >> + file://0001-Fix-possible-null-pointer-dereference.patch \ >> + file://0002-Workaround-for-erroneous-gcc-Werror.patch \ >> + file://0003-Make-nfsv3_optype-guarded-by-_USE_NFS3.patch \ >> + " >> +SRC_URI[sha256sum] = "7a7214f0cec054f2dd45a44c107f02812c1478730c4c85681d1bfe7ca1e64f8c" >> + >> +DEPENDS = "flex-native bison-native ntirpc util-linux" >> + >> +inherit cmake pkgconfig >> + >> +PACKAGECONFIG[dbus] = "-DUSE_DBUS=ON,-DUSE_DBUS=OFF,dbus" >> +PACKAGECONFIG[nfsidmap] = "-DUSE_NFSIDMAP=ON,-DUSE_NFSIDMAP=OFF,nfs-utils" >> +PACKAGECONFIG[nfsv3] = "-DUSE_NFS3=ON,-DUSE_NFS3=OFF" >> +PACKAGECONFIG[winbind] = "-D_MSPAC_SUPPORT=true,-D_MSPAC_SUPPORT=false,samba" >> +PACKAGECONFIG[lttng] = "-DUSE_LTTNG=ON,-DUSE_LTTNG=OFF,lttng-ust liburcu" >> +PACKAGECONFIG[acl] = "-DUSE_ACL_MAPPING=ON,USE_ACL_MAPPING=OFF,acl" >> +PACKAGECONFIG[jemalloc] = ",,jemalloc" >> + >> + >> +OECMAKE_SOURCEPATH = "${S}/src" >> + >> +EXTRA_OECMAKE += "-DUSE_SYSTEM_NTIRPC=ON" >> +EXTRA_OECMAKE += "-DUSE_GSS=OFF" >> + >> +# Sort out the brain-dead cmake file >> +# (https://github.com/nfs-ganesha/ntirpc/issues/150) >> +do_install:append() { >> + if [ "${prefix}/lib64" != "${libdir}" -a -d ${D}${prefix}/lib64 ]; then >> + mv ${D}${prefix}/lib64 ${D}${libdir} >> + fi >> +} >> + >> +FILES:${PN} += "${libdir}/ganesha/*.so" >> + >> +BBCLASSEXTEND = "native nativesdk" >> diff --git a/meta/recipes-devtools/unfs3/unfs3/0001-Add-listen-action-for-a-tcp-socket.patch b/meta/recipes-devtools/unfs3/unfs3/0001-Add-listen-action-for-a-tcp-socket.patch >> deleted file mode 100644 >> index e9b9d3df46..0000000000 >> --- a/meta/recipes-devtools/unfs3/unfs3/0001-Add-listen-action-for-a-tcp-socket.patch >> +++ /dev/null >> @@ -1,54 +0,0 @@ >> -From b42ab8e1aca951dd06c113159491b3fd5cf06f2e Mon Sep 17 00:00:00 2001 >> -From: Haiqing Bai <Haiqing.Bai@windriver.com> >> -Date: Thu, 24 Oct 2019 09:39:04 +0800 >> -Subject: [PATCH] Add "listen" action for a tcp socket which does not call >> - 'listen' after 'bind' >> - >> -It is found that /usr/bin/unfsd customus 100% cpu after starting qemu with 'nfs' >> -option, and below lots of error messages shows when strace the process: >> - >> -poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND},{fd=4, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}, >> -{fd=5, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND},{fd=6, events =POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], >> -4, 2000) = 2 ([{fd=4, revents=POLLHUP},{fd=6, revents=POLLHUP}]) >> -accept(4, 0x7ffd5e6dddc0, [128]) = -1 EINVAL (Invalid argument) >> -accept(6, 0x7ffd5e6dddc0, [128]) = -1 EINVAL (Invalid argument) >> - >> -% time seconds usecs/call calls errors syscall >> ------- ----------- ----------- --------- --------- ---------------- >> - 70.87 0.005392 0 513886 513886 accept >> - 29.13 0.002216 0 256943 poll >> - 0.00 0.000000 0 4 read >> - >> -The root cause is that 'listen' is not called for the binded >> -socket. The depended libtipc does not call 'listen' if found >> -the incomming socket is binded, so 'accept' reports the error >> -in the 'for' loop and cpu consumed. >> - >> -Upstream-Status: Pending >> - >> -Signed-off-by: Haiqing Bai <Haiqing.Bai@windriver.com> >> ---- >> - daemon.c | 7 +++++++ >> - 1 file changed, 7 insertions(+) >> - >> -diff --git a/daemon.c b/daemon.c >> -index 028a181..4c85903 100644 >> ---- a/daemon.c >> -+++ b/daemon.c >> -@@ -814,6 +814,13 @@ static SVCXPRT *create_tcp_transport(unsigned int port) >> - fprintf(stderr, "Couldn't bind to tcp port %d\n", port); >> - exit(1); >> - } >> -+ >> -+ if (listen(sock, SOMAXCONN) < 0) { >> -+ perror("listen"); >> -+ fprintf(stderr, "Couldn't listen on the address \n"); >> -+ close(sock); >> -+ exit(1); >> -+ } >> - } >> - >> - transp = svctcp_create(sock, 0, 0); >> --- >> -1.9.1 >> - >> diff --git a/meta/recipes-devtools/unfs3/unfs3/0001-attr-fix-utime-for-symlink.patch b/meta/recipes-devtools/unfs3/unfs3/0001-attr-fix-utime-for-symlink.patch >> deleted file mode 100644 >> index 6957d102b8..0000000000 >> --- a/meta/recipes-devtools/unfs3/unfs3/0001-attr-fix-utime-for-symlink.patch >> +++ /dev/null >> @@ -1,85 +0,0 @@ >> -From 3f4fcb62661059bad77a2e957b4621137797bc2f Mon Sep 17 00:00:00 2001 >> -From: Rui Wang <rui.wang@windriver.com> >> -Date: Fri, 15 Jun 2018 14:19:10 +0800 >> -Subject: [PATCH] attr: fix utime for symlink >> - >> -unfs3 has an old defect that it can not change the timestamps of a >> -symlink file because it only uses utime(), which will follow the >> -symlink. This will not cause an error if the symlink points to an >> -existent file. But under some special situation, such as installing >> -a rpm package, rpm tool will create the symlink first and try to >> -modify the timestamps of it, when the target file is non-existent. >> -This will cause an ESTALE error. Making rpm tool ignore this error >> -is a solution, but not the best one. An acceptable approach is >> -Making unfs3 support lutimes(), which can modify the symlink file >> -itself. Considering not every system support this function, so a >> -function checking is necessary. >> - >> -Upstream-Status: Submitted [https://sourceforge.net/p/unfs3/bugs/12/] >> - >> -Signed-off-by: Rui Wang <rui.wang@windriver.com> >> ---- >> - attr.c | 15 +++++++++++---- >> - backend_unix.h | 2 ++ >> - configure.ac | 1 + >> - 3 files changed, 14 insertions(+), 4 deletions(-) >> - >> -diff --git a/attr.c b/attr.c >> -index 73e5c75..427d0e2 100644 >> ---- a/attr.c >> -+++ b/attr.c >> -@@ -280,7 +280,7 @@ post_op_attr get_post_cached(struct svc_req * req) >> - static nfsstat3 set_time(const char *path, backend_statstruct buf, sattr3 new) >> - { >> - time_t new_atime, new_mtime; >> -- struct utimbuf utim; >> -+ struct timeval stamps[2]; >> - int res; >> - >> - /* set atime and mtime */ >> -@@ -302,10 +302,17 @@ static nfsstat3 set_time(const char *path, backend_statstruct buf, sattr3 new) >> - else /* DONT_CHANGE */ >> - new_mtime = buf.st_mtime; >> - >> -- utim.actime = new_atime; >> -- utim.modtime = new_mtime; >> -+ stamps[0].tv_sec = new_atime; >> -+ stamps[0].tv_usec = 0; >> -+ stamps[1].tv_sec = new_mtime; >> -+ stamps[1].tv_usec = 0; >> -+ >> -+#if HAVE_LUTIMES >> -+ res = backend_lutimes(path, stamps); >> -+#else >> -+ res = backend_utimes(path, stamps); >> -+#endif >> - >> -- res = backend_utime(path, &utim); >> - if (res == -1) >> - return setattr_err(); >> - } >> -diff --git a/backend_unix.h b/backend_unix.h >> -index fbc2af3..813ffd3 100644 >> ---- a/backend_unix.h >> -+++ b/backend_unix.h >> -@@ -61,6 +61,8 @@ >> - #define backend_symlink symlink >> - #define backend_truncate truncate >> - #define backend_utime utime >> -+#define backend_utimes utimes >> -+#define backend_lutimes lutimes >> - #define backend_statstruct struct stat >> - #define backend_dirstream DIR >> - #define backend_statvfsstruct struct statvfs >> -diff --git a/configure.ac b/configure.ac >> -index aeec598..ea7f167 100644 >> ---- a/configure.ac >> -+++ b/configure.ac >> -@@ -37,6 +37,7 @@ AC_CHECK_FUNCS(setresuid setresgid) >> - AC_CHECK_FUNCS(vsyslog) >> - AC_CHECK_FUNCS(lchown) >> - AC_CHECK_FUNCS(setgroups) >> -+AC_CHECK_FUNCS(lutimes) >> - UNFS3_SOLARIS_RPC >> - UNFS3_PORTMAP_DEFINE >> - UNFS3_COMPILE_WARNINGS >> diff --git a/meta/recipes-devtools/unfs3/unfs3/0001-daemon.c-Libtirpc-porting-fixes.patch b/meta/recipes-devtools/unfs3/unfs3/0001-daemon.c-Libtirpc-porting-fixes.patch >> deleted file mode 100644 >> index 6eee6748f9..0000000000 >> --- a/meta/recipes-devtools/unfs3/unfs3/0001-daemon.c-Libtirpc-porting-fixes.patch >> +++ /dev/null >> @@ -1,37 +0,0 @@ >> -From c7a2a65d6c2a433312540c207860740d6e4e7629 Mon Sep 17 00:00:00 2001 >> -From: Khem Raj <raj.khem@gmail.com> >> -Date: Sun, 11 Mar 2018 17:32:54 -0700 >> -Subject: [PATCH] daemon.c: Libtirpc porting fixes >> - >> -Signed-off-by: Khem Raj <raj.khem@gmail.com> >> ---- >> -Upstream-Status: Pending >> - >> - daemon.c | 4 ++-- >> - 1 file changed, 2 insertions(+), 2 deletions(-) >> - >> -diff --git a/daemon.c b/daemon.c >> -index 22f30f6..028a181 100644 >> ---- a/daemon.c >> -+++ b/daemon.c >> -@@ -117,7 +117,7 @@ void logmsg(int prio, const char *fmt, ...) >> - */ >> - struct in_addr get_remote(struct svc_req *rqstp) >> - { >> -- return (svc_getcaller(rqstp->rq_xprt))->sin_addr; >> -+ return ((struct sockaddr_in*)svc_getcaller(rqstp->rq_xprt))->sin_addr; >> - } >> - >> - /* >> -@@ -125,7 +125,7 @@ struct in_addr get_remote(struct svc_req *rqstp) >> - */ >> - short get_port(struct svc_req *rqstp) >> - { >> -- return (svc_getcaller(rqstp->rq_xprt))->sin_port; >> -+ return ((struct sockaddr_in*)svc_getcaller(rqstp->rq_xprt))->sin_port; >> - } >> - >> - /* >> --- >> -2.16.2 >> - >> diff --git a/meta/recipes-devtools/unfs3/unfs3/alternate_rpc_ports.patch b/meta/recipes-devtools/unfs3/unfs3/alternate_rpc_ports.patch >> deleted file mode 100644 >> index ff745d4774..0000000000 >> --- a/meta/recipes-devtools/unfs3/unfs3/alternate_rpc_ports.patch >> +++ /dev/null >> @@ -1,158 +0,0 @@ >> -Add ability to specify rcp port numbers >> - >> -In order to run more than one unfs server on a host system, you must >> -be able to specify alternate rpc port numbers. >> - >> -Jason Wessel <jason.wessel@windriver.com> >> - >> -Upstream-Status: Submitted http://sourceforge.net/p/unfs3/bugs/5/ >> - >> ---- >> - daemon.c | 44 +++++++++++++++++++++++++++++++------------- >> - mount.c | 4 ++-- >> - 2 files changed, 33 insertions(+), 15 deletions(-) >> - >> ---- a/daemon.c >> -+++ b/daemon.c >> -@@ -78,6 +78,8 @@ int opt_testconfig = FALSE; >> - struct in_addr opt_bind_addr; >> - int opt_readable_executables = FALSE; >> - char *opt_pid_file = NULL; >> -+int nfs_prog = NFS3_PROGRAM; >> -+int mount_prog = MOUNTPROG; >> - >> - /* Register with portmapper? */ >> - int opt_portmapper = TRUE; >> -@@ -206,7 +208,7 @@ static void parse_options(int argc, char >> - { >> - >> - int opt = 0; >> -- char *optstring = "bcC:de:hl:m:n:prstTuwi:"; >> -+ char *optstring = "bcC:de:hl:m:n:prstTuwi:x:y:"; >> - >> - while (opt != -1) { >> - opt = getopt(argc, argv, optstring); >> -@@ -261,8 +263,24 @@ static void parse_options(int argc, char >> - printf >> - ("\t-r report unreadable executables as readable\n"); >> - printf("\t-T test exports file and exit\n"); >> -+ printf("\t-x <port> alternate NFS RPC port\n"); >> -+ printf("\t-y <port> alternate MOUNTD RPC port\n"); >> - exit(0); >> - break; >> -+ case 'x': >> -+ nfs_prog = strtol(optarg, NULL, 10); >> -+ if (nfs_prog == 0) { >> -+ fprintf(stderr, "Invalid NFS RPC port\n"); >> -+ exit(1); >> -+ } >> -+ break; >> -+ case 'y': >> -+ mount_prog = strtol(optarg, NULL, 10); >> -+ if (mount_prog == 0) { >> -+ fprintf(stderr, "Invalid MOUNTD RPC port\n"); >> -+ exit(1); >> -+ } >> -+ break; >> - case 'l': >> - opt_bind_addr.s_addr = inet_addr(optarg); >> - if (opt_bind_addr.s_addr == (unsigned) -1) { >> -@@ -347,12 +365,12 @@ void daemon_exit(int error) >> - #endif /* WIN32 */ >> - >> - if (opt_portmapper) { >> -- svc_unregister(MOUNTPROG, MOUNTVERS1); >> -- svc_unregister(MOUNTPROG, MOUNTVERS3); >> -+ svc_unregister(mount_prog, MOUNTVERS1); >> -+ svc_unregister(mount_prog, MOUNTVERS3); >> - } >> - >> - if (opt_portmapper) { >> -- svc_unregister(NFS3_PROGRAM, NFS_V3); >> -+ svc_unregister(nfs_prog, NFS_V3); >> - } >> - >> - if (error == SIGSEGV) >> -@@ -657,13 +675,13 @@ static void mountprog_3(struct svc_req * >> - static void register_nfs_service(SVCXPRT * udptransp, SVCXPRT * tcptransp) >> - { >> - if (opt_portmapper) { >> -- pmap_unset(NFS3_PROGRAM, NFS_V3); >> -+ pmap_unset(nfs_prog, NFS_V3); >> - } >> - >> - if (udptransp != NULL) { >> - /* Register NFS service for UDP */ >> - if (!svc_register >> -- (udptransp, NFS3_PROGRAM, NFS_V3, nfs3_program_3, >> -+ (udptransp, nfs_prog, NFS_V3, nfs3_program_3, >> - opt_portmapper ? IPPROTO_UDP : 0)) { >> - fprintf(stderr, "%s\n", >> - "unable to register (NFS3_PROGRAM, NFS_V3, udp)."); >> -@@ -674,7 +692,7 @@ static void register_nfs_service(SVCXPRT >> - if (tcptransp != NULL) { >> - /* Register NFS service for TCP */ >> - if (!svc_register >> -- (tcptransp, NFS3_PROGRAM, NFS_V3, nfs3_program_3, >> -+ (tcptransp, nfs_prog, NFS_V3, nfs3_program_3, >> - opt_portmapper ? IPPROTO_TCP : 0)) { >> - fprintf(stderr, "%s\n", >> - "unable to register (NFS3_PROGRAM, NFS_V3, tcp)."); >> -@@ -686,14 +704,14 @@ static void register_nfs_service(SVCXPRT >> - static void register_mount_service(SVCXPRT * udptransp, SVCXPRT * tcptransp) >> - { >> - if (opt_portmapper) { >> -- pmap_unset(MOUNTPROG, MOUNTVERS1); >> -- pmap_unset(MOUNTPROG, MOUNTVERS3); >> -+ pmap_unset(mount_prog, MOUNTVERS1); >> -+ pmap_unset(mount_prog, MOUNTVERS3); >> - } >> - >> - if (udptransp != NULL) { >> - /* Register MOUNT service (v1) for UDP */ >> - if (!svc_register >> -- (udptransp, MOUNTPROG, MOUNTVERS1, mountprog_3, >> -+ (udptransp, mount_prog, MOUNTVERS1, mountprog_3, >> - opt_portmapper ? IPPROTO_UDP : 0)) { >> - fprintf(stderr, "%s\n", >> - "unable to register (MOUNTPROG, MOUNTVERS1, udp)."); >> -@@ -702,7 +720,7 @@ static void register_mount_service(SVCXP >> - >> - /* Register MOUNT service (v3) for UDP */ >> - if (!svc_register >> -- (udptransp, MOUNTPROG, MOUNTVERS3, mountprog_3, >> -+ (udptransp, mount_prog, MOUNTVERS3, mountprog_3, >> - opt_portmapper ? IPPROTO_UDP : 0)) { >> - fprintf(stderr, "%s\n", >> - "unable to register (MOUNTPROG, MOUNTVERS3, udp)."); >> -@@ -713,7 +731,7 @@ static void register_mount_service(SVCXP >> - if (tcptransp != NULL) { >> - /* Register MOUNT service (v1) for TCP */ >> - if (!svc_register >> -- (tcptransp, MOUNTPROG, MOUNTVERS1, mountprog_3, >> -+ (tcptransp, mount_prog, MOUNTVERS1, mountprog_3, >> - opt_portmapper ? IPPROTO_TCP : 0)) { >> - fprintf(stderr, "%s\n", >> - "unable to register (MOUNTPROG, MOUNTVERS1, tcp)."); >> -@@ -722,7 +740,7 @@ static void register_mount_service(SVCXP >> - >> - /* Register MOUNT service (v3) for TCP */ >> - if (!svc_register >> -- (tcptransp, MOUNTPROG, MOUNTVERS3, mountprog_3, >> -+ (tcptransp, mount_prog, MOUNTVERS3, mountprog_3, >> - opt_portmapper ? IPPROTO_TCP : 0)) { >> - fprintf(stderr, "%s\n", >> - "unable to register (MOUNTPROG, MOUNTVERS3, tcp)."); >> ---- a/mount.c >> -+++ b/mount.c >> -@@ -155,8 +155,8 @@ mountres3 *mountproc_mnt_3_svc(dirpath * >> - /* error out if not version 3 */ >> - if (rqstp->rq_vers != 3) { >> - logmsg(LOG_INFO, >> -- "%s attempted mount with unsupported protocol version", >> -- inet_ntoa(get_remote(rqstp))); >> -+ "%s attempted mount with unsupported protocol version: %i", >> -+ inet_ntoa(get_remote(rqstp)), rqstp->rq_vers); >> - result.fhs_status = MNT3ERR_INVAL; >> - return &result; >> - } >> diff --git a/meta/recipes-devtools/unfs3/unfs3/fix_compile_warning.patch b/meta/recipes-devtools/unfs3/unfs3/fix_compile_warning.patch >> deleted file mode 100644 >> index aada014117..0000000000 >> --- a/meta/recipes-devtools/unfs3/unfs3/fix_compile_warning.patch >> +++ /dev/null >> @@ -1,25 +0,0 @@ >> -daemon.c: Check exit code of chdir() >> - >> -Stop the compile warning and fix the code to act on a chdir() failure. >> -If this one does fail something is very, very wrong. >> - >> -Signed-off-by: Jason Wessel <jason.wessel@windriver.com> >> - >> -Upstream-Status: Submitted http://sourceforge.net/p/unfs3/bugs/5/ >> - >> ---- >> - daemon.c | 3 ++- >> - 1 file changed, 2 insertions(+), 1 deletion(-) >> - >> ---- a/daemon.c >> -+++ b/daemon.c >> -@@ -964,7 +964,8 @@ int main(int argc, char **argv) >> - sigaction(SIGALRM, &act, NULL); >> - >> - /* don't make directory we started in busy */ >> -- chdir("/"); >> -+ if(chdir("/") < 0) >> -+ daemon_exit(0); >> - >> - /* detach from terminal */ >> - if (opt_detach) { >> diff --git a/meta/recipes-devtools/unfs3/unfs3/fix_pid_race_parent_writes_child_pid.patch b/meta/recipes-devtools/unfs3/unfs3/fix_pid_race_parent_writes_child_pid.patch >> deleted file mode 100644 >> index 46b187e5f3..0000000000 >> --- a/meta/recipes-devtools/unfs3/unfs3/fix_pid_race_parent_writes_child_pid.patch >> +++ /dev/null >> @@ -1,61 +0,0 @@ >> -daemon.c: Fix race window for writing of the pid file >> - >> -The parent process should write the pid file such that the pid file >> -will can be checked immediately following exit of the fork from the >> -parent. >> - >> -This allows external monitoring applications to watch the daemon >> -without having to add sleep calls to wait for the pid file be written >> -on a busy system. >> - >> -Signed-off-by: Jason Wessel <jason.wessel@windriver.com> >> - >> -Upstream-Status: Submitted http://sourceforge.net/p/unfs3/bugs/5/ >> - >> ---- >> - daemon.c | 12 +++++++++--- >> - 1 file changed, 9 insertions(+), 3 deletions(-) >> - >> ---- a/daemon.c >> -+++ b/daemon.c >> -@@ -153,7 +153,7 @@ int get_socket_type(struct svc_req *rqst >> - /* >> - * write current pid to a file >> - */ >> --static void create_pid_file(void) >> -+static void create_pid_file(int pid) >> - { >> - char buf[16]; >> - int fd, res, len; >> -@@ -175,7 +175,7 @@ static void create_pid_file(void) >> - } >> - #endif >> - >> -- sprintf(buf, "%i\n", backend_getpid()); >> -+ sprintf(buf, "%i\n", pid); >> - len = strlen(buf); >> - >> - res = backend_pwrite(fd, buf, len, 0); >> -@@ -970,6 +970,10 @@ int main(int argc, char **argv) >> - fprintf(stderr, "could not fork into background\n"); >> - daemon_exit(0); >> - } >> -+ if (pid) >> -+ create_pid_file(pid); >> -+ } else { >> -+ create_pid_file(backend_getpid()); >> - } >> - #endif /* WIN32 */ >> - >> -@@ -1006,8 +1010,10 @@ int main(int argc, char **argv) >> - /* no umask to not screw up create modes */ >> - umask(0); >> - >> -+#ifdef WIN32 >> - /* create pid file if wanted */ >> -- create_pid_file(); >> -+ create_pid_file(backend_getpid()); >> -+#endif >> - >> - /* initialize internal stuff */ >> - fh_cache_init(); >> diff --git a/meta/recipes-devtools/unfs3/unfs3/no-yywrap.patch b/meta/recipes-devtools/unfs3/unfs3/no-yywrap.patch >> deleted file mode 100644 >> index e3496814d8..0000000000 >> --- a/meta/recipes-devtools/unfs3/unfs3/no-yywrap.patch >> +++ /dev/null >> @@ -1,14 +0,0 @@ >> -Upstream-Status: Backport [https://github.com/unfs3/unfs3/commit/3fa0568e6ef96e045286afe18444bc28fe93962b] >> - >> -diff --git a/Config/exports.l b/Config/exports.l >> -index 662603c..7e7c4fc 100644 >> ---- a/Config/exports.l >> -+++ b/Config/exports.l >> -@@ -50,6 +50,7 @@ OLDNET {IP}"/"{IP} >> - >> - %option nounput >> - %option noinput >> -+%option noyywrap >> - >> - %% >> - >> diff --git a/meta/recipes-devtools/unfs3/unfs3/relative_max_socket_path_len.patch b/meta/recipes-devtools/unfs3/unfs3/relative_max_socket_path_len.patch >> deleted file mode 100644 >> index 219dd35aec..0000000000 >> --- a/meta/recipes-devtools/unfs3/unfs3/relative_max_socket_path_len.patch >> +++ /dev/null >> @@ -1,74 +0,0 @@ >> -nfs.c: Allow max sa.sun_path for a localdomain socket with the user nfs-server >> - >> -There is a hard limit for the kernel of 108 characters for a >> -localdomain socket name. To avoid problems with the user nfs >> -server it should maximize the number of characters by using >> -a relative path on the server side. >> - >> -Previously the nfs-server used the absolute path name passed to >> -the sa.sunpath arg for binding the socket and this has caused >> -problems for both the X server and UST binaries which make >> -heavy use of named sockets with long names. >> - >> -Signed-off-by: Jason Wessel <jason.wessel@windriver.com> >> - >> -Upstream-Status: Submitted http://sourceforge.net/p/unfs3/bugs/5/ >> - >> ---- >> - nfs.c | 29 +++++++++++++++++++++++++++-- >> - 1 file changed, 27 insertions(+), 2 deletions(-) >> - >> ---- a/nfs.c >> -+++ b/nfs.c >> -@@ -672,6 +672,7 @@ SYMLINK3res *nfsproc3_symlink_3_svc(SYML >> - } >> - >> - #ifndef WIN32 >> -+static char pathbuf_tmp[NFS_MAXPATHLEN + NFS_MAXNAMLEN + 1]; >> - >> - /* >> - * create Unix socket >> -@@ -680,17 +681,41 @@ static int mksocket(const char *path, mo >> - { >> - int res, sock; >> - struct sockaddr_un addr; >> -+ unsigned int len = strlen(path); >> - >> - sock = socket(PF_UNIX, SOCK_STREAM, 0); >> -- addr.sun_family = AF_UNIX; >> -- strcpy(addr.sun_path, path); >> - res = sock; >> - if (res != -1) { >> -+ addr.sun_family = AF_UNIX; >> -+ if (len < sizeof(addr.sun_path) -1) { >> -+ strcpy(addr.sun_path, path); >> -+ } else { >> -+ char *ptr; >> -+ res = -1; >> -+ if (len >= sizeof(path)) >> -+ goto out; >> -+ strcpy(pathbuf_tmp, path); >> -+ ptr = strrchr(pathbuf_tmp,'/'); >> -+ if (ptr) { >> -+ *ptr = '\0'; >> -+ ptr++; >> -+ if (chdir(pathbuf_tmp)) >> -+ goto out; >> -+ } else { >> -+ ptr = pathbuf_tmp; >> -+ } >> -+ if (strlen(ptr) >= sizeof(addr.sun_path)) >> -+ goto out; >> -+ strcpy(addr.sun_path, ptr); >> -+ } >> - umask(~mode); >> - res = >> - bind(sock, (struct sockaddr *) &addr, >> - sizeof(addr.sun_family) + strlen(addr.sun_path)); >> - umask(0); >> -+out: >> -+ if (chdir("/")) >> -+ fprintf(stderr, "Internal failure to chdir /\n"); >> - close(sock); >> - } >> - return res; >> diff --git a/meta/recipes-devtools/unfs3/unfs3/rename_fh_cache.patch b/meta/recipes-devtools/unfs3/unfs3/rename_fh_cache.patch >> deleted file mode 100644 >> index e6d89530f8..0000000000 >> --- a/meta/recipes-devtools/unfs3/unfs3/rename_fh_cache.patch >> +++ /dev/null >> @@ -1,64 +0,0 @@ >> -From: Jason Wessel <jason.wessel@windriver.com> >> -Date: Sat, 23 Feb 2013 08:49:08 -0600 >> -Subject: [PATCH] fh_cache: fix statle nfs handle on rename problem >> - >> -The following test case fails with modern linunx kernels which cache >> -the renamed inode. >> - >> - % mkdir a;mkdir b;mv b a/;ls -l a >> - ls: a/b: Stale NFS file handle >> - >> -The issue is that nfserver was not updating the fh_cache with the new >> -location of the inode, when it moves directories. >> - >> -Signed-off-by: Jason Wessel <jason.wessel@windriver.com> >> - >> -Upstream-Status: Submitted http://sourceforge.net/p/unfs3/bugs/5/ >> - >> ---- >> - fh_cache.c | 12 ++++++++++++ >> - fh_cache.h | 1 + >> - nfs.c | 2 ++ >> - 3 files changed, 15 insertions(+) >> - >> ---- a/fh_cache.c >> -+++ b/fh_cache.c >> -@@ -199,6 +199,18 @@ static char *fh_cache_lookup(uint32 dev, >> - } >> - >> - /* >> -+ * update a fh inode cache for an operation like rename >> -+ */ >> -+void fh_cache_update(nfs_fh3 fh, char *path) >> -+{ >> -+ unfs3_fh_t *obj = (void *) fh.data.data_val; >> -+ backend_statstruct buf; >> -+ >> -+ if (backend_lstat(path, &buf) != -1) { >> -+ fh_cache_add(obj->dev, buf.st_ino, path); >> -+ } >> -+} >> -+/* >> - * resolve a filename into a path >> - * cache-using wrapper for fh_decomp_raw >> - */ >> ---- a/fh_cache.h >> -+++ b/fh_cache.h >> -@@ -19,5 +19,6 @@ unfs3_fh_t fh_comp(const char *path, str >> - unfs3_fh_t *fh_comp_ptr(const char *path, struct svc_req *rqstp, int need_dir); >> - >> - char *fh_cache_add(uint32 dev, uint64 ino, const char *path); >> -+void fh_cache_update(nfs_fh3 fh, char *path); >> - >> - #endif >> ---- a/nfs.c >> -+++ b/nfs.c >> -@@ -876,6 +876,8 @@ RENAME3res *nfsproc3_rename_3_svc(RENAME >> - res = backend_rename(from_obj, to_obj); >> - if (res == -1) >> - result.status = rename_err(); >> -+ /* Update the fh_cache with moved inode value */ >> -+ fh_cache_update(argp->to.dir, to_obj); >> - } >> - } >> - >> diff --git a/meta/recipes-devtools/unfs3/unfs3/tcp_no_delay.patch b/meta/recipes-devtools/unfs3/unfs3/tcp_no_delay.patch >> deleted file mode 100644 >> index b3521c63eb..0000000000 >> --- a/meta/recipes-devtools/unfs3/unfs3/tcp_no_delay.patch >> +++ /dev/null >> @@ -1,56 +0,0 @@ >> -daemon.c: Add option for tcp no delay >> - >> -Allow the NFS tcp sockets to conditionally use TCP_NODELAY >> - >> -Upstream-Status: Submitted http://sourceforge.net/p/unfs3/bugs/5/ >> - >> ---- >> - daemon.c | 9 ++++++++- >> - 1 file changed, 8 insertions(+), 1 deletion(-) >> - >> ---- a/daemon.c >> -+++ b/daemon.c >> -@@ -17,6 +17,7 @@ >> - #ifndef WIN32 >> - #include <sys/socket.h> >> - #include <netinet/in.h> >> -+#include <netinet/tcp.h> >> - #include <arpa/inet.h> >> - #include <syslog.h> >> - #else /* WIN32 */ >> -@@ -75,6 +76,7 @@ unsigned int opt_mount_port = NFS_PORT; >> - int opt_singleuser = FALSE; >> - int opt_brute_force = FALSE; >> - int opt_testconfig = FALSE; >> -+int opt_tcp_nodelay = FALSE; >> - struct in_addr opt_bind_addr; >> - int opt_readable_executables = FALSE; >> - char *opt_pid_file = NULL; >> -@@ -208,7 +210,7 @@ static void parse_options(int argc, char >> - { >> - >> - int opt = 0; >> -- char *optstring = "bcC:de:hl:m:n:prstTuwi:x:y:"; >> -+ char *optstring = "bcC:de:hl:m:Nn:prstTuwi:x:y:"; >> - >> - while (opt != -1) { >> - opt = getopt(argc, argv, optstring); >> -@@ -295,6 +297,9 @@ static void parse_options(int argc, char >> - exit(1); >> - } >> - break; >> -+ case 'N': >> -+ opt_tcp_nodelay = TRUE; >> -+ break; >> - case 'n': >> - opt_nfs_port = strtol(optarg, NULL, 10); >> - if (opt_nfs_port == 0) { >> -@@ -802,6 +807,8 @@ static SVCXPRT *create_tcp_transport(uns >> - sin.sin_addr.s_addr = opt_bind_addr.s_addr; >> - sock = socket(PF_INET, SOCK_STREAM, 0); >> - setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (const char *) &on, sizeof(on)); >> -+ if (opt_tcp_nodelay) >> -+ setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on)); >> - if (bind(sock, (struct sockaddr *) &sin, sizeof(struct sockaddr))) { >> - perror("bind"); >> - fprintf(stderr, "Couldn't bind to tcp port %d\n", port); >> diff --git a/meta/recipes-devtools/unfs3/unfs3/unfs3_parallel_build.patch b/meta/recipes-devtools/unfs3/unfs3/unfs3_parallel_build.patch >> deleted file mode 100644 >> index 6f64dd5b3e..0000000000 >> --- a/meta/recipes-devtools/unfs3/unfs3/unfs3_parallel_build.patch >> +++ /dev/null >> @@ -1,37 +0,0 @@ >> -Fix parallel build dependency issue >> - >> -If building with make -j2 the lib.a will not get built in time. >> - >> -Jason Wessel <jason.wessel@windriver.com> >> - >> -Upstream-Status: Submitted http://sourceforge.net/p/unfs3/bugs/5/ >> - >> ---- >> - Config/Makefile.in | 3 +++ >> - Makefile.in | 3 ++- >> - 2 files changed, 5 insertions(+), 1 deletion(-) >> - >> ---- a/Makefile.in >> -+++ b/Makefile.in >> -@@ -29,7 +29,8 @@ DESTDIR = >> - >> - VPATH = $(srcdir) >> - >> --all: subdirs unfsd$(EXEEXT) >> -+all: subdirs >> -+ $(MAKE) unfsd$(EXEEXT) >> - >> - unfsd$(EXEEXT): $(OBJS) $(CONFOBJ) $(EXTRAOBJ) >> - $(CC) -o $@ $(OBJS) $(CONFOBJ) $(EXTRAOBJ) $(LDFLAGS) >> ---- a/Config/Makefile.in >> -+++ b/Config/Makefile.in >> -@@ -16,6 +16,9 @@ lib.a: $(OBJS) >> - $(AR) crs lib.a $(OBJS) >> - >> - y.tab.h y.tab.c: $(srcdir)/exports.y >> -+y.tab.h: y.tab.c >> -+ >> -+y.tab.c: $(srcdir)/exports.y >> - $(YACC) -d $(srcdir)/exports.y >> - >> - y.tab.o: y.tab.c $(srcdir)/exports.h $(top_srcdir)/nfs.h $(top_srcdir)/mount.h $(top_srcdir)/daemon.h >> diff --git a/meta/recipes-devtools/unfs3/unfs3_git.bb b/meta/recipes-devtools/unfs3/unfs3_git.bb >> deleted file mode 100644 >> index 7a5d273851..0000000000 >> --- a/meta/recipes-devtools/unfs3/unfs3_git.bb >> +++ /dev/null >> @@ -1,45 +0,0 @@ >> -SUMMARY = "Userspace NFS server v3 protocol" >> -DESCRIPTION = "UNFS3 is a user-space implementation of the NFSv3 server \ >> -specification. It provides a daemon for the MOUNT and NFS protocols, which \ >> -are used by NFS clients for accessing files on the server." >> -HOMEPAGE = "https://github.com/unfs3/unfs3" >> -SECTION = "console/network" >> -LICENSE = "unfs3" >> -LIC_FILES_CHKSUM = "file://LICENSE;md5=9475885294e17c0cc0067820d042792e" >> - >> -DEPENDS = "flex-native bison-native flex" >> -DEPENDS += "libtirpc" >> -DEPENDS:append:class-nativesdk = " flex-nativesdk" >> - >> -ASNEEDED = "" >> - >> -S = "${WORKDIR}/git" >> -SRC_URI = "git://github.com/unfs3/unfs3.git;protocol=https;branch=master \ >> - file://unfs3_parallel_build.patch \ >> - file://alternate_rpc_ports.patch \ >> - file://fix_pid_race_parent_writes_child_pid.patch \ >> - file://fix_compile_warning.patch \ >> - file://rename_fh_cache.patch \ >> - file://relative_max_socket_path_len.patch \ >> - file://tcp_no_delay.patch \ >> - file://0001-daemon.c-Libtirpc-porting-fixes.patch \ >> - file://0001-attr-fix-utime-for-symlink.patch \ >> - file://0001-Add-listen-action-for-a-tcp-socket.patch \ >> - file://no-yywrap.patch \ >> - " >> -SRCREV = "c12a5c69a8d59be6916cbd0e0f41c159f1962425" >> -UPSTREAM_CHECK_GITTAGREGEX = "unfs3\-(?P<pver>.+)" >> - >> -PV = "0.9.22+${SRCPV}" >> - >> -BBCLASSEXTEND = "native nativesdk" >> - >> -inherit autotools >> -EXTRA_OECONF:append:class-native = " --sbindir=${bindir}" >> -CFLAGS:append = " -I${STAGING_INCDIR}/tirpc" >> -EXTRA_OECONF:append = " LIBS=-ltirpc" >> - >> -# Turn off these header detects else the inode search >> -# will walk entire file systems and this is a real problem >> -# if you have 2 TB of files to walk in your file system >> -CACHED_CONFIGUREVARS = "ac_cv_header_mntent_h=no ac_cv_header_sys_mnttab_h=no" >> -- >> 2.25.1 >> >> >> -=-=-=-=-=-=-=-=-=-=-=- >> Links: You receive all messages sent to this group. >> View/Reply Online (#169935): https://lists.openembedded.org/g/openembedded-core/message/169935 >> Mute This Topic: https://lists.openembedded.org/mt/93293558/1686489 >> Group Owner: openembedded-core+owner@lists.openembedded.org >> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com] >> -=-=-=-=-=-=-=-=-=-=-=- >>
diff --git a/meta/lib/oeqa/utils/nfs.py b/meta/lib/oeqa/utils/nfs.py index c1218656ce..bd947c0b88 100644 --- a/meta/lib/oeqa/utils/nfs.py +++ b/meta/lib/oeqa/utils/nfs.py @@ -16,7 +16,7 @@ def unfs_server(directory, logger = None): unfs_sysroot = get_bb_var("RECIPE_SYSROOT_NATIVE", "unfs3-native") if not os.path.exists(os.path.join(unfs_sysroot, "usr", "bin", "unfsd")): # build native tool - bitbake("unfs3-native -c addto_recipe_sysroot") + bitbake("nfs-ganesha-native -c addto_recipe_sysroot") exports = None cmd = None diff --git a/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0001-Fix-possible-null-pointer-dereference.patch b/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0001-Fix-possible-null-pointer-dereference.patch new file mode 100644 index 0000000000..b06fc8d07e --- /dev/null +++ b/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0001-Fix-possible-null-pointer-dereference.patch @@ -0,0 +1,40 @@ +From e70f112dc79263298baf7a1b92c19234b8f1e506 Mon Sep 17 00:00:00 2001 +From: Paulo Neves <ptsneves@gmail.com> +Date: Tue, 23 Aug 2022 14:56:44 +0200 +Subject: [PATCH] Fix possible null pointer dereference + +If logging is enabled on nfs3_lookup, name is NULL initialized +and used. Assign name to a valid location before it is used. + +Upstream-Status: Pending [1] + +[1] https://github.com/nfs-ganesha/nfs-ganesha/pull/846 + +Change-Id: Ia1a922a1d34268a7d0b5ba97293e647ef07f8b3a +Signed-off-by: Paulo Neves <ptsneves@gmail.com> + +--- + src/Protocols/NFS/nfs3_lookup.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/src/Protocols/NFS/nfs3_lookup.c b/src/Protocols/NFS/nfs3_lookup.c +index da65769..97c9603 100644 +--- a/src/Protocols/NFS/nfs3_lookup.c ++++ b/src/Protocols/NFS/nfs3_lookup.c +@@ -74,6 +74,7 @@ int nfs3_lookup(nfs_arg_t *arg, struct svc_req *req, nfs_res_t *res) + */ + fsal_prepare_attrs(&attrs, ATTRS_NFS3 | ATTR_RDATTR_ERR); + ++ name = arg->arg_lookup3.what.name; + LogNFS3_Operation(COMPONENT_NFSPROTO, req, &arg->arg_lookup3.what.dir, + " name: %s", name); + +@@ -89,8 +90,6 @@ int nfs3_lookup(nfs_arg_t *arg, struct svc_req *req, nfs_res_t *res) + goto out; + } + +- name = arg->arg_lookup3.what.name; +- + fsal_status = fsal_lookup(obj_dir, name, &obj_file, &attrs); + + if (FSAL_IS_ERROR(fsal_status)) { diff --git a/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0002-Workaround-for-erroneous-gcc-Werror.patch b/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0002-Workaround-for-erroneous-gcc-Werror.patch new file mode 100644 index 0000000000..4eaae2493a --- /dev/null +++ b/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0002-Workaround-for-erroneous-gcc-Werror.patch @@ -0,0 +1,33 @@ +From b8fa32c779b968fbbbe5d5dcaafa664b98cec81c Mon Sep 17 00:00:00 2001 +From: Paulo Neves <ptsneves@gmail.com> +Date: Tue, 23 Aug 2022 14:59:19 +0200 +Subject: [PATCH] Workaround for erroneous gcc Werror. + +gcc incorrectly decides that pos_len and pos_end are used +unninitialized. It is incorrect because the condition of their +use is the same as their early initialization. Apparently +gcc does not pick this fact and with Werror, emits an error + +Upstream-Status: Inappropriate [reason] + +Change-Id: I30a345483b5a4bc4b5ceb46badaec3a9d27d1782 +Signed-off-by: Paulo Neves <ptsneves@gmail.com> + +--- + src/Protocols/NFS/nfs_proto_tools.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/Protocols/NFS/nfs_proto_tools.c b/src/Protocols/NFS/nfs_proto_tools.c +index d0f628d..a741482 100644 +--- a/src/Protocols/NFS/nfs_proto_tools.c ++++ b/src/Protocols/NFS/nfs_proto_tools.c +@@ -3688,7 +3688,8 @@ bool xdr_fattr4_encode(XDR *xdrs, struct xdr_attrs_args *args, + struct bitmap4 bitmap_encoded; + struct bitmap4 *bitmap; + /* Remember where we put the length of the attr data */ +- u_int pos_len, pos_end; ++ u_int pos_len = 0; ++ u_int pos_end = 0; + uint32_t attr_len = 0; + + bitmap = attr_bitmap != NULL ? attr_bitmap : &bitmap_encoded; diff --git a/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0003-Make-nfsv3_optype-guarded-by-_USE_NFS3.patch b/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0003-Make-nfsv3_optype-guarded-by-_USE_NFS3.patch new file mode 100644 index 0000000000..ee89ed5628 --- /dev/null +++ b/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0003-Make-nfsv3_optype-guarded-by-_USE_NFS3.patch @@ -0,0 +1,37 @@ +From 48086cb311e37ea58de60352609e270be62ee7e8 Mon Sep 17 00:00:00 2001 +From: Paulo Neves <ptsneves@gmail.com> +Date: Tue, 23 Aug 2022 22:59:46 +0200 +Subject: [PATCH] Make nfsv3_optype guarded by _USE_NFS3 + +-Wunused-variable will trigger when NFS3 is not enabled. + +Upstream-Status: Pending [1] + +[1] https://github.com/nfs-ganesha/nfs-ganesha/pull/846 + +Change-Id: Ib1fab2e1a59b834cda8317b2a3450e3c19437975 +Signed-off-by: Paulo Neves <ptsneves@gmail.com> + +--- + src/support/server_stats.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/support/server_stats.c b/src/support/server_stats.c +index 19a8cac..a92b035 100644 +--- a/src/support/server_stats.c ++++ b/src/support/server_stats.c +@@ -246,11 +246,14 @@ enum proto_op_type { + LAYOUT_OP + }; + ++#ifdef _USE_NFS3 + static const uint32_t nfsv3_optype[NFS_V3_NB_COMMAND] = { + [NFSPROC3_READ] = READ_OP, + [NFSPROC3_WRITE] = WRITE_OP, + }; + ++#endif ++ + static const uint32_t nfsv40_optype[NFS_V40_NB_OPERATION] = { + [NFS4_OP_READ] = READ_OP, + [NFS4_OP_WRITE] = WRITE_OP, diff --git a/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/module.patch b/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/module.patch new file mode 100644 index 0000000000..e096afe4ce --- /dev/null +++ b/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/module.patch @@ -0,0 +1,27 @@ +From 4d8ec5e1b04455b3f6ca40743a298e16a57cfaa4 Mon Sep 17 00:00:00 2001 +From: Ross Burton <ross@burtonini.com> +Date: Fri, 5 Oct 2018 15:12:46 +0100 +Subject: [PATCH] Install fsalmem as a module + +Upstream-Status: Submitted [https://github.com/nfs-ganesha/nfs-ganesha/pull/354] +Signed-off-by: Ross Burton <ross.burton@intel.com> + +This isn't a shared library, it's a module. + +--- + src/FSAL/FSAL_MEM/CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/FSAL/FSAL_MEM/CMakeLists.txt b/src/FSAL/FSAL_MEM/CMakeLists.txt +index 0f30fff..a9191ae 100644 +--- a/src/FSAL/FSAL_MEM/CMakeLists.txt ++++ b/src/FSAL/FSAL_MEM/CMakeLists.txt +@@ -14,7 +14,7 @@ SET(fsalmem_LIB_SRCS + mem_up.c + ) + +-add_library(fsalmem SHARED ${fsalmem_LIB_SRCS}) ++add_library(fsalmem MODULE ${fsalmem_LIB_SRCS}) + add_sanitizers(fsalmem) + + target_link_libraries(fsalmem diff --git a/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha_4.0.bb b/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha_4.0.bb new file mode 100644 index 0000000000..693fdf3777 --- /dev/null +++ b/meta/recipes-connectivity/nfs-ganesha/nfs-ganesha_4.0.bb @@ -0,0 +1,42 @@ +# TODO: review licenses +LICENSE = "LGPL-3.0-only & Unknown" +LIC_FILES_CHKSUM = "file://src/LICENSE.txt;md5=e6a600fd5e1d9cbde2d983680233ad02 \ + file://src/cidr/LICENSE;md5=ab952b9c4b37753b18d79f305e8d8593" + +SRC_URI = "https://download.nfs-ganesha.org/4/4.0/nfs-ganesha-4.0.tar.gz \ + file://module.patch \ + file://0001-Fix-possible-null-pointer-dereference.patch \ + file://0002-Workaround-for-erroneous-gcc-Werror.patch \ + file://0003-Make-nfsv3_optype-guarded-by-_USE_NFS3.patch \ + " +SRC_URI[sha256sum] = "7a7214f0cec054f2dd45a44c107f02812c1478730c4c85681d1bfe7ca1e64f8c" + +DEPENDS = "flex-native bison-native ntirpc util-linux" + +inherit cmake pkgconfig + +PACKAGECONFIG[dbus] = "-DUSE_DBUS=ON,-DUSE_DBUS=OFF,dbus" +PACKAGECONFIG[nfsidmap] = "-DUSE_NFSIDMAP=ON,-DUSE_NFSIDMAP=OFF,nfs-utils" +PACKAGECONFIG[nfsv3] = "-DUSE_NFS3=ON,-DUSE_NFS3=OFF" +PACKAGECONFIG[winbind] = "-D_MSPAC_SUPPORT=true,-D_MSPAC_SUPPORT=false,samba" +PACKAGECONFIG[lttng] = "-DUSE_LTTNG=ON,-DUSE_LTTNG=OFF,lttng-ust liburcu" +PACKAGECONFIG[acl] = "-DUSE_ACL_MAPPING=ON,USE_ACL_MAPPING=OFF,acl" +PACKAGECONFIG[jemalloc] = ",,jemalloc" + + +OECMAKE_SOURCEPATH = "${S}/src" + +EXTRA_OECMAKE += "-DUSE_SYSTEM_NTIRPC=ON" +EXTRA_OECMAKE += "-DUSE_GSS=OFF" + +# Sort out the brain-dead cmake file +# (https://github.com/nfs-ganesha/ntirpc/issues/150) +do_install:append() { + if [ "${prefix}/lib64" != "${libdir}" -a -d ${D}${prefix}/lib64 ]; then + mv ${D}${prefix}/lib64 ${D}${libdir} + fi +} + +FILES:${PN} += "${libdir}/ganesha/*.so" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/unfs3/unfs3/0001-Add-listen-action-for-a-tcp-socket.patch b/meta/recipes-devtools/unfs3/unfs3/0001-Add-listen-action-for-a-tcp-socket.patch deleted file mode 100644 index e9b9d3df46..0000000000 --- a/meta/recipes-devtools/unfs3/unfs3/0001-Add-listen-action-for-a-tcp-socket.patch +++ /dev/null @@ -1,54 +0,0 @@ -From b42ab8e1aca951dd06c113159491b3fd5cf06f2e Mon Sep 17 00:00:00 2001 -From: Haiqing Bai <Haiqing.Bai@windriver.com> -Date: Thu, 24 Oct 2019 09:39:04 +0800 -Subject: [PATCH] Add "listen" action for a tcp socket which does not call - 'listen' after 'bind' - -It is found that /usr/bin/unfsd customus 100% cpu after starting qemu with 'nfs' -option, and below lots of error messages shows when strace the process: - -poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND},{fd=4, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}, -{fd=5, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND},{fd=6, events =POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], -4, 2000) = 2 ([{fd=4, revents=POLLHUP},{fd=6, revents=POLLHUP}]) -accept(4, 0x7ffd5e6dddc0, [128]) = -1 EINVAL (Invalid argument) -accept(6, 0x7ffd5e6dddc0, [128]) = -1 EINVAL (Invalid argument) - -% time seconds usecs/call calls errors syscall ------- ----------- ----------- --------- --------- ---------------- - 70.87 0.005392 0 513886 513886 accept - 29.13 0.002216 0 256943 poll - 0.00 0.000000 0 4 read - -The root cause is that 'listen' is not called for the binded -socket. The depended libtipc does not call 'listen' if found -the incomming socket is binded, so 'accept' reports the error -in the 'for' loop and cpu consumed. - -Upstream-Status: Pending - -Signed-off-by: Haiqing Bai <Haiqing.Bai@windriver.com> ---- - daemon.c | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git a/daemon.c b/daemon.c -index 028a181..4c85903 100644 ---- a/daemon.c -+++ b/daemon.c -@@ -814,6 +814,13 @@ static SVCXPRT *create_tcp_transport(unsigned int port) - fprintf(stderr, "Couldn't bind to tcp port %d\n", port); - exit(1); - } -+ -+ if (listen(sock, SOMAXCONN) < 0) { -+ perror("listen"); -+ fprintf(stderr, "Couldn't listen on the address \n"); -+ close(sock); -+ exit(1); -+ } - } - - transp = svctcp_create(sock, 0, 0); --- -1.9.1 - diff --git a/meta/recipes-devtools/unfs3/unfs3/0001-attr-fix-utime-for-symlink.patch b/meta/recipes-devtools/unfs3/unfs3/0001-attr-fix-utime-for-symlink.patch deleted file mode 100644 index 6957d102b8..0000000000 --- a/meta/recipes-devtools/unfs3/unfs3/0001-attr-fix-utime-for-symlink.patch +++ /dev/null @@ -1,85 +0,0 @@ -From 3f4fcb62661059bad77a2e957b4621137797bc2f Mon Sep 17 00:00:00 2001 -From: Rui Wang <rui.wang@windriver.com> -Date: Fri, 15 Jun 2018 14:19:10 +0800 -Subject: [PATCH] attr: fix utime for symlink - -unfs3 has an old defect that it can not change the timestamps of a -symlink file because it only uses utime(), which will follow the -symlink. This will not cause an error if the symlink points to an -existent file. But under some special situation, such as installing -a rpm package, rpm tool will create the symlink first and try to -modify the timestamps of it, when the target file is non-existent. -This will cause an ESTALE error. Making rpm tool ignore this error -is a solution, but not the best one. An acceptable approach is -Making unfs3 support lutimes(), which can modify the symlink file -itself. Considering not every system support this function, so a -function checking is necessary. - -Upstream-Status: Submitted [https://sourceforge.net/p/unfs3/bugs/12/] - -Signed-off-by: Rui Wang <rui.wang@windriver.com> ---- - attr.c | 15 +++++++++++---- - backend_unix.h | 2 ++ - configure.ac | 1 + - 3 files changed, 14 insertions(+), 4 deletions(-) - -diff --git a/attr.c b/attr.c -index 73e5c75..427d0e2 100644 ---- a/attr.c -+++ b/attr.c -@@ -280,7 +280,7 @@ post_op_attr get_post_cached(struct svc_req * req) - static nfsstat3 set_time(const char *path, backend_statstruct buf, sattr3 new) - { - time_t new_atime, new_mtime; -- struct utimbuf utim; -+ struct timeval stamps[2]; - int res; - - /* set atime and mtime */ -@@ -302,10 +302,17 @@ static nfsstat3 set_time(const char *path, backend_statstruct buf, sattr3 new) - else /* DONT_CHANGE */ - new_mtime = buf.st_mtime; - -- utim.actime = new_atime; -- utim.modtime = new_mtime; -+ stamps[0].tv_sec = new_atime; -+ stamps[0].tv_usec = 0; -+ stamps[1].tv_sec = new_mtime; -+ stamps[1].tv_usec = 0; -+ -+#if HAVE_LUTIMES -+ res = backend_lutimes(path, stamps); -+#else -+ res = backend_utimes(path, stamps); -+#endif - -- res = backend_utime(path, &utim); - if (res == -1) - return setattr_err(); - } -diff --git a/backend_unix.h b/backend_unix.h -index fbc2af3..813ffd3 100644 ---- a/backend_unix.h -+++ b/backend_unix.h -@@ -61,6 +61,8 @@ - #define backend_symlink symlink - #define backend_truncate truncate - #define backend_utime utime -+#define backend_utimes utimes -+#define backend_lutimes lutimes - #define backend_statstruct struct stat - #define backend_dirstream DIR - #define backend_statvfsstruct struct statvfs -diff --git a/configure.ac b/configure.ac -index aeec598..ea7f167 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -37,6 +37,7 @@ AC_CHECK_FUNCS(setresuid setresgid) - AC_CHECK_FUNCS(vsyslog) - AC_CHECK_FUNCS(lchown) - AC_CHECK_FUNCS(setgroups) -+AC_CHECK_FUNCS(lutimes) - UNFS3_SOLARIS_RPC - UNFS3_PORTMAP_DEFINE - UNFS3_COMPILE_WARNINGS diff --git a/meta/recipes-devtools/unfs3/unfs3/0001-daemon.c-Libtirpc-porting-fixes.patch b/meta/recipes-devtools/unfs3/unfs3/0001-daemon.c-Libtirpc-porting-fixes.patch deleted file mode 100644 index 6eee6748f9..0000000000 --- a/meta/recipes-devtools/unfs3/unfs3/0001-daemon.c-Libtirpc-porting-fixes.patch +++ /dev/null @@ -1,37 +0,0 @@ -From c7a2a65d6c2a433312540c207860740d6e4e7629 Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Sun, 11 Mar 2018 17:32:54 -0700 -Subject: [PATCH] daemon.c: Libtirpc porting fixes - -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- -Upstream-Status: Pending - - daemon.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/daemon.c b/daemon.c -index 22f30f6..028a181 100644 ---- a/daemon.c -+++ b/daemon.c -@@ -117,7 +117,7 @@ void logmsg(int prio, const char *fmt, ...) - */ - struct in_addr get_remote(struct svc_req *rqstp) - { -- return (svc_getcaller(rqstp->rq_xprt))->sin_addr; -+ return ((struct sockaddr_in*)svc_getcaller(rqstp->rq_xprt))->sin_addr; - } - - /* -@@ -125,7 +125,7 @@ struct in_addr get_remote(struct svc_req *rqstp) - */ - short get_port(struct svc_req *rqstp) - { -- return (svc_getcaller(rqstp->rq_xprt))->sin_port; -+ return ((struct sockaddr_in*)svc_getcaller(rqstp->rq_xprt))->sin_port; - } - - /* --- -2.16.2 - diff --git a/meta/recipes-devtools/unfs3/unfs3/alternate_rpc_ports.patch b/meta/recipes-devtools/unfs3/unfs3/alternate_rpc_ports.patch deleted file mode 100644 index ff745d4774..0000000000 --- a/meta/recipes-devtools/unfs3/unfs3/alternate_rpc_ports.patch +++ /dev/null @@ -1,158 +0,0 @@ -Add ability to specify rcp port numbers - -In order to run more than one unfs server on a host system, you must -be able to specify alternate rpc port numbers. - -Jason Wessel <jason.wessel@windriver.com> - -Upstream-Status: Submitted http://sourceforge.net/p/unfs3/bugs/5/ - ---- - daemon.c | 44 +++++++++++++++++++++++++++++++------------- - mount.c | 4 ++-- - 2 files changed, 33 insertions(+), 15 deletions(-) - ---- a/daemon.c -+++ b/daemon.c -@@ -78,6 +78,8 @@ int opt_testconfig = FALSE; - struct in_addr opt_bind_addr; - int opt_readable_executables = FALSE; - char *opt_pid_file = NULL; -+int nfs_prog = NFS3_PROGRAM; -+int mount_prog = MOUNTPROG; - - /* Register with portmapper? */ - int opt_portmapper = TRUE; -@@ -206,7 +208,7 @@ static void parse_options(int argc, char - { - - int opt = 0; -- char *optstring = "bcC:de:hl:m:n:prstTuwi:"; -+ char *optstring = "bcC:de:hl:m:n:prstTuwi:x:y:"; - - while (opt != -1) { - opt = getopt(argc, argv, optstring); -@@ -261,8 +263,24 @@ static void parse_options(int argc, char - printf - ("\t-r report unreadable executables as readable\n"); - printf("\t-T test exports file and exit\n"); -+ printf("\t-x <port> alternate NFS RPC port\n"); -+ printf("\t-y <port> alternate MOUNTD RPC port\n"); - exit(0); - break; -+ case 'x': -+ nfs_prog = strtol(optarg, NULL, 10); -+ if (nfs_prog == 0) { -+ fprintf(stderr, "Invalid NFS RPC port\n"); -+ exit(1); -+ } -+ break; -+ case 'y': -+ mount_prog = strtol(optarg, NULL, 10); -+ if (mount_prog == 0) { -+ fprintf(stderr, "Invalid MOUNTD RPC port\n"); -+ exit(1); -+ } -+ break; - case 'l': - opt_bind_addr.s_addr = inet_addr(optarg); - if (opt_bind_addr.s_addr == (unsigned) -1) { -@@ -347,12 +365,12 @@ void daemon_exit(int error) - #endif /* WIN32 */ - - if (opt_portmapper) { -- svc_unregister(MOUNTPROG, MOUNTVERS1); -- svc_unregister(MOUNTPROG, MOUNTVERS3); -+ svc_unregister(mount_prog, MOUNTVERS1); -+ svc_unregister(mount_prog, MOUNTVERS3); - } - - if (opt_portmapper) { -- svc_unregister(NFS3_PROGRAM, NFS_V3); -+ svc_unregister(nfs_prog, NFS_V3); - } - - if (error == SIGSEGV) -@@ -657,13 +675,13 @@ static void mountprog_3(struct svc_req * - static void register_nfs_service(SVCXPRT * udptransp, SVCXPRT * tcptransp) - { - if (opt_portmapper) { -- pmap_unset(NFS3_PROGRAM, NFS_V3); -+ pmap_unset(nfs_prog, NFS_V3); - } - - if (udptransp != NULL) { - /* Register NFS service for UDP */ - if (!svc_register -- (udptransp, NFS3_PROGRAM, NFS_V3, nfs3_program_3, -+ (udptransp, nfs_prog, NFS_V3, nfs3_program_3, - opt_portmapper ? IPPROTO_UDP : 0)) { - fprintf(stderr, "%s\n", - "unable to register (NFS3_PROGRAM, NFS_V3, udp)."); -@@ -674,7 +692,7 @@ static void register_nfs_service(SVCXPRT - if (tcptransp != NULL) { - /* Register NFS service for TCP */ - if (!svc_register -- (tcptransp, NFS3_PROGRAM, NFS_V3, nfs3_program_3, -+ (tcptransp, nfs_prog, NFS_V3, nfs3_program_3, - opt_portmapper ? IPPROTO_TCP : 0)) { - fprintf(stderr, "%s\n", - "unable to register (NFS3_PROGRAM, NFS_V3, tcp)."); -@@ -686,14 +704,14 @@ static void register_nfs_service(SVCXPRT - static void register_mount_service(SVCXPRT * udptransp, SVCXPRT * tcptransp) - { - if (opt_portmapper) { -- pmap_unset(MOUNTPROG, MOUNTVERS1); -- pmap_unset(MOUNTPROG, MOUNTVERS3); -+ pmap_unset(mount_prog, MOUNTVERS1); -+ pmap_unset(mount_prog, MOUNTVERS3); - } - - if (udptransp != NULL) { - /* Register MOUNT service (v1) for UDP */ - if (!svc_register -- (udptransp, MOUNTPROG, MOUNTVERS1, mountprog_3, -+ (udptransp, mount_prog, MOUNTVERS1, mountprog_3, - opt_portmapper ? IPPROTO_UDP : 0)) { - fprintf(stderr, "%s\n", - "unable to register (MOUNTPROG, MOUNTVERS1, udp)."); -@@ -702,7 +720,7 @@ static void register_mount_service(SVCXP - - /* Register MOUNT service (v3) for UDP */ - if (!svc_register -- (udptransp, MOUNTPROG, MOUNTVERS3, mountprog_3, -+ (udptransp, mount_prog, MOUNTVERS3, mountprog_3, - opt_portmapper ? IPPROTO_UDP : 0)) { - fprintf(stderr, "%s\n", - "unable to register (MOUNTPROG, MOUNTVERS3, udp)."); -@@ -713,7 +731,7 @@ static void register_mount_service(SVCXP - if (tcptransp != NULL) { - /* Register MOUNT service (v1) for TCP */ - if (!svc_register -- (tcptransp, MOUNTPROG, MOUNTVERS1, mountprog_3, -+ (tcptransp, mount_prog, MOUNTVERS1, mountprog_3, - opt_portmapper ? IPPROTO_TCP : 0)) { - fprintf(stderr, "%s\n", - "unable to register (MOUNTPROG, MOUNTVERS1, tcp)."); -@@ -722,7 +740,7 @@ static void register_mount_service(SVCXP - - /* Register MOUNT service (v3) for TCP */ - if (!svc_register -- (tcptransp, MOUNTPROG, MOUNTVERS3, mountprog_3, -+ (tcptransp, mount_prog, MOUNTVERS3, mountprog_3, - opt_portmapper ? IPPROTO_TCP : 0)) { - fprintf(stderr, "%s\n", - "unable to register (MOUNTPROG, MOUNTVERS3, tcp)."); ---- a/mount.c -+++ b/mount.c -@@ -155,8 +155,8 @@ mountres3 *mountproc_mnt_3_svc(dirpath * - /* error out if not version 3 */ - if (rqstp->rq_vers != 3) { - logmsg(LOG_INFO, -- "%s attempted mount with unsupported protocol version", -- inet_ntoa(get_remote(rqstp))); -+ "%s attempted mount with unsupported protocol version: %i", -+ inet_ntoa(get_remote(rqstp)), rqstp->rq_vers); - result.fhs_status = MNT3ERR_INVAL; - return &result; - } diff --git a/meta/recipes-devtools/unfs3/unfs3/fix_compile_warning.patch b/meta/recipes-devtools/unfs3/unfs3/fix_compile_warning.patch deleted file mode 100644 index aada014117..0000000000 --- a/meta/recipes-devtools/unfs3/unfs3/fix_compile_warning.patch +++ /dev/null @@ -1,25 +0,0 @@ -daemon.c: Check exit code of chdir() - -Stop the compile warning and fix the code to act on a chdir() failure. -If this one does fail something is very, very wrong. - -Signed-off-by: Jason Wessel <jason.wessel@windriver.com> - -Upstream-Status: Submitted http://sourceforge.net/p/unfs3/bugs/5/ - ---- - daemon.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - ---- a/daemon.c -+++ b/daemon.c -@@ -964,7 +964,8 @@ int main(int argc, char **argv) - sigaction(SIGALRM, &act, NULL); - - /* don't make directory we started in busy */ -- chdir("/"); -+ if(chdir("/") < 0) -+ daemon_exit(0); - - /* detach from terminal */ - if (opt_detach) { diff --git a/meta/recipes-devtools/unfs3/unfs3/fix_pid_race_parent_writes_child_pid.patch b/meta/recipes-devtools/unfs3/unfs3/fix_pid_race_parent_writes_child_pid.patch deleted file mode 100644 index 46b187e5f3..0000000000 --- a/meta/recipes-devtools/unfs3/unfs3/fix_pid_race_parent_writes_child_pid.patch +++ /dev/null @@ -1,61 +0,0 @@ -daemon.c: Fix race window for writing of the pid file - -The parent process should write the pid file such that the pid file -will can be checked immediately following exit of the fork from the -parent. - -This allows external monitoring applications to watch the daemon -without having to add sleep calls to wait for the pid file be written -on a busy system. - -Signed-off-by: Jason Wessel <jason.wessel@windriver.com> - -Upstream-Status: Submitted http://sourceforge.net/p/unfs3/bugs/5/ - ---- - daemon.c | 12 +++++++++--- - 1 file changed, 9 insertions(+), 3 deletions(-) - ---- a/daemon.c -+++ b/daemon.c -@@ -153,7 +153,7 @@ int get_socket_type(struct svc_req *rqst - /* - * write current pid to a file - */ --static void create_pid_file(void) -+static void create_pid_file(int pid) - { - char buf[16]; - int fd, res, len; -@@ -175,7 +175,7 @@ static void create_pid_file(void) - } - #endif - -- sprintf(buf, "%i\n", backend_getpid()); -+ sprintf(buf, "%i\n", pid); - len = strlen(buf); - - res = backend_pwrite(fd, buf, len, 0); -@@ -970,6 +970,10 @@ int main(int argc, char **argv) - fprintf(stderr, "could not fork into background\n"); - daemon_exit(0); - } -+ if (pid) -+ create_pid_file(pid); -+ } else { -+ create_pid_file(backend_getpid()); - } - #endif /* WIN32 */ - -@@ -1006,8 +1010,10 @@ int main(int argc, char **argv) - /* no umask to not screw up create modes */ - umask(0); - -+#ifdef WIN32 - /* create pid file if wanted */ -- create_pid_file(); -+ create_pid_file(backend_getpid()); -+#endif - - /* initialize internal stuff */ - fh_cache_init(); diff --git a/meta/recipes-devtools/unfs3/unfs3/no-yywrap.patch b/meta/recipes-devtools/unfs3/unfs3/no-yywrap.patch deleted file mode 100644 index e3496814d8..0000000000 --- a/meta/recipes-devtools/unfs3/unfs3/no-yywrap.patch +++ /dev/null @@ -1,14 +0,0 @@ -Upstream-Status: Backport [https://github.com/unfs3/unfs3/commit/3fa0568e6ef96e045286afe18444bc28fe93962b] - -diff --git a/Config/exports.l b/Config/exports.l -index 662603c..7e7c4fc 100644 ---- a/Config/exports.l -+++ b/Config/exports.l -@@ -50,6 +50,7 @@ OLDNET {IP}"/"{IP} - - %option nounput - %option noinput -+%option noyywrap - - %% - diff --git a/meta/recipes-devtools/unfs3/unfs3/relative_max_socket_path_len.patch b/meta/recipes-devtools/unfs3/unfs3/relative_max_socket_path_len.patch deleted file mode 100644 index 219dd35aec..0000000000 --- a/meta/recipes-devtools/unfs3/unfs3/relative_max_socket_path_len.patch +++ /dev/null @@ -1,74 +0,0 @@ -nfs.c: Allow max sa.sun_path for a localdomain socket with the user nfs-server - -There is a hard limit for the kernel of 108 characters for a -localdomain socket name. To avoid problems with the user nfs -server it should maximize the number of characters by using -a relative path on the server side. - -Previously the nfs-server used the absolute path name passed to -the sa.sunpath arg for binding the socket and this has caused -problems for both the X server and UST binaries which make -heavy use of named sockets with long names. - -Signed-off-by: Jason Wessel <jason.wessel@windriver.com> - -Upstream-Status: Submitted http://sourceforge.net/p/unfs3/bugs/5/ - ---- - nfs.c | 29 +++++++++++++++++++++++++++-- - 1 file changed, 27 insertions(+), 2 deletions(-) - ---- a/nfs.c -+++ b/nfs.c -@@ -672,6 +672,7 @@ SYMLINK3res *nfsproc3_symlink_3_svc(SYML - } - - #ifndef WIN32 -+static char pathbuf_tmp[NFS_MAXPATHLEN + NFS_MAXNAMLEN + 1]; - - /* - * create Unix socket -@@ -680,17 +681,41 @@ static int mksocket(const char *path, mo - { - int res, sock; - struct sockaddr_un addr; -+ unsigned int len = strlen(path); - - sock = socket(PF_UNIX, SOCK_STREAM, 0); -- addr.sun_family = AF_UNIX; -- strcpy(addr.sun_path, path); - res = sock; - if (res != -1) { -+ addr.sun_family = AF_UNIX; -+ if (len < sizeof(addr.sun_path) -1) { -+ strcpy(addr.sun_path, path); -+ } else { -+ char *ptr; -+ res = -1; -+ if (len >= sizeof(path)) -+ goto out; -+ strcpy(pathbuf_tmp, path); -+ ptr = strrchr(pathbuf_tmp,'/'); -+ if (ptr) { -+ *ptr = '\0'; -+ ptr++; -+ if (chdir(pathbuf_tmp)) -+ goto out; -+ } else { -+ ptr = pathbuf_tmp; -+ } -+ if (strlen(ptr) >= sizeof(addr.sun_path)) -+ goto out; -+ strcpy(addr.sun_path, ptr); -+ } - umask(~mode); - res = - bind(sock, (struct sockaddr *) &addr, - sizeof(addr.sun_family) + strlen(addr.sun_path)); - umask(0); -+out: -+ if (chdir("/")) -+ fprintf(stderr, "Internal failure to chdir /\n"); - close(sock); - } - return res; diff --git a/meta/recipes-devtools/unfs3/unfs3/rename_fh_cache.patch b/meta/recipes-devtools/unfs3/unfs3/rename_fh_cache.patch deleted file mode 100644 index e6d89530f8..0000000000 --- a/meta/recipes-devtools/unfs3/unfs3/rename_fh_cache.patch +++ /dev/null @@ -1,64 +0,0 @@ -From: Jason Wessel <jason.wessel@windriver.com> -Date: Sat, 23 Feb 2013 08:49:08 -0600 -Subject: [PATCH] fh_cache: fix statle nfs handle on rename problem - -The following test case fails with modern linunx kernels which cache -the renamed inode. - - % mkdir a;mkdir b;mv b a/;ls -l a - ls: a/b: Stale NFS file handle - -The issue is that nfserver was not updating the fh_cache with the new -location of the inode, when it moves directories. - -Signed-off-by: Jason Wessel <jason.wessel@windriver.com> - -Upstream-Status: Submitted http://sourceforge.net/p/unfs3/bugs/5/ - ---- - fh_cache.c | 12 ++++++++++++ - fh_cache.h | 1 + - nfs.c | 2 ++ - 3 files changed, 15 insertions(+) - ---- a/fh_cache.c -+++ b/fh_cache.c -@@ -199,6 +199,18 @@ static char *fh_cache_lookup(uint32 dev, - } - - /* -+ * update a fh inode cache for an operation like rename -+ */ -+void fh_cache_update(nfs_fh3 fh, char *path) -+{ -+ unfs3_fh_t *obj = (void *) fh.data.data_val; -+ backend_statstruct buf; -+ -+ if (backend_lstat(path, &buf) != -1) { -+ fh_cache_add(obj->dev, buf.st_ino, path); -+ } -+} -+/* - * resolve a filename into a path - * cache-using wrapper for fh_decomp_raw - */ ---- a/fh_cache.h -+++ b/fh_cache.h -@@ -19,5 +19,6 @@ unfs3_fh_t fh_comp(const char *path, str - unfs3_fh_t *fh_comp_ptr(const char *path, struct svc_req *rqstp, int need_dir); - - char *fh_cache_add(uint32 dev, uint64 ino, const char *path); -+void fh_cache_update(nfs_fh3 fh, char *path); - - #endif ---- a/nfs.c -+++ b/nfs.c -@@ -876,6 +876,8 @@ RENAME3res *nfsproc3_rename_3_svc(RENAME - res = backend_rename(from_obj, to_obj); - if (res == -1) - result.status = rename_err(); -+ /* Update the fh_cache with moved inode value */ -+ fh_cache_update(argp->to.dir, to_obj); - } - } - diff --git a/meta/recipes-devtools/unfs3/unfs3/tcp_no_delay.patch b/meta/recipes-devtools/unfs3/unfs3/tcp_no_delay.patch deleted file mode 100644 index b3521c63eb..0000000000 --- a/meta/recipes-devtools/unfs3/unfs3/tcp_no_delay.patch +++ /dev/null @@ -1,56 +0,0 @@ -daemon.c: Add option for tcp no delay - -Allow the NFS tcp sockets to conditionally use TCP_NODELAY - -Upstream-Status: Submitted http://sourceforge.net/p/unfs3/bugs/5/ - ---- - daemon.c | 9 ++++++++- - 1 file changed, 8 insertions(+), 1 deletion(-) - ---- a/daemon.c -+++ b/daemon.c -@@ -17,6 +17,7 @@ - #ifndef WIN32 - #include <sys/socket.h> - #include <netinet/in.h> -+#include <netinet/tcp.h> - #include <arpa/inet.h> - #include <syslog.h> - #else /* WIN32 */ -@@ -75,6 +76,7 @@ unsigned int opt_mount_port = NFS_PORT; - int opt_singleuser = FALSE; - int opt_brute_force = FALSE; - int opt_testconfig = FALSE; -+int opt_tcp_nodelay = FALSE; - struct in_addr opt_bind_addr; - int opt_readable_executables = FALSE; - char *opt_pid_file = NULL; -@@ -208,7 +210,7 @@ static void parse_options(int argc, char - { - - int opt = 0; -- char *optstring = "bcC:de:hl:m:n:prstTuwi:x:y:"; -+ char *optstring = "bcC:de:hl:m:Nn:prstTuwi:x:y:"; - - while (opt != -1) { - opt = getopt(argc, argv, optstring); -@@ -295,6 +297,9 @@ static void parse_options(int argc, char - exit(1); - } - break; -+ case 'N': -+ opt_tcp_nodelay = TRUE; -+ break; - case 'n': - opt_nfs_port = strtol(optarg, NULL, 10); - if (opt_nfs_port == 0) { -@@ -802,6 +807,8 @@ static SVCXPRT *create_tcp_transport(uns - sin.sin_addr.s_addr = opt_bind_addr.s_addr; - sock = socket(PF_INET, SOCK_STREAM, 0); - setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (const char *) &on, sizeof(on)); -+ if (opt_tcp_nodelay) -+ setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on)); - if (bind(sock, (struct sockaddr *) &sin, sizeof(struct sockaddr))) { - perror("bind"); - fprintf(stderr, "Couldn't bind to tcp port %d\n", port); diff --git a/meta/recipes-devtools/unfs3/unfs3/unfs3_parallel_build.patch b/meta/recipes-devtools/unfs3/unfs3/unfs3_parallel_build.patch deleted file mode 100644 index 6f64dd5b3e..0000000000 --- a/meta/recipes-devtools/unfs3/unfs3/unfs3_parallel_build.patch +++ /dev/null @@ -1,37 +0,0 @@ -Fix parallel build dependency issue - -If building with make -j2 the lib.a will not get built in time. - -Jason Wessel <jason.wessel@windriver.com> - -Upstream-Status: Submitted http://sourceforge.net/p/unfs3/bugs/5/ - ---- - Config/Makefile.in | 3 +++ - Makefile.in | 3 ++- - 2 files changed, 5 insertions(+), 1 deletion(-) - ---- a/Makefile.in -+++ b/Makefile.in -@@ -29,7 +29,8 @@ DESTDIR = - - VPATH = $(srcdir) - --all: subdirs unfsd$(EXEEXT) -+all: subdirs -+ $(MAKE) unfsd$(EXEEXT) - - unfsd$(EXEEXT): $(OBJS) $(CONFOBJ) $(EXTRAOBJ) - $(CC) -o $@ $(OBJS) $(CONFOBJ) $(EXTRAOBJ) $(LDFLAGS) ---- a/Config/Makefile.in -+++ b/Config/Makefile.in -@@ -16,6 +16,9 @@ lib.a: $(OBJS) - $(AR) crs lib.a $(OBJS) - - y.tab.h y.tab.c: $(srcdir)/exports.y -+y.tab.h: y.tab.c -+ -+y.tab.c: $(srcdir)/exports.y - $(YACC) -d $(srcdir)/exports.y - - y.tab.o: y.tab.c $(srcdir)/exports.h $(top_srcdir)/nfs.h $(top_srcdir)/mount.h $(top_srcdir)/daemon.h diff --git a/meta/recipes-devtools/unfs3/unfs3_git.bb b/meta/recipes-devtools/unfs3/unfs3_git.bb deleted file mode 100644 index 7a5d273851..0000000000 --- a/meta/recipes-devtools/unfs3/unfs3_git.bb +++ /dev/null @@ -1,45 +0,0 @@ -SUMMARY = "Userspace NFS server v3 protocol" -DESCRIPTION = "UNFS3 is a user-space implementation of the NFSv3 server \ -specification. It provides a daemon for the MOUNT and NFS protocols, which \ -are used by NFS clients for accessing files on the server." -HOMEPAGE = "https://github.com/unfs3/unfs3" -SECTION = "console/network" -LICENSE = "unfs3" -LIC_FILES_CHKSUM = "file://LICENSE;md5=9475885294e17c0cc0067820d042792e" - -DEPENDS = "flex-native bison-native flex" -DEPENDS += "libtirpc" -DEPENDS:append:class-nativesdk = " flex-nativesdk" - -ASNEEDED = "" - -S = "${WORKDIR}/git" -SRC_URI = "git://github.com/unfs3/unfs3.git;protocol=https;branch=master \ - file://unfs3_parallel_build.patch \ - file://alternate_rpc_ports.patch \ - file://fix_pid_race_parent_writes_child_pid.patch \ - file://fix_compile_warning.patch \ - file://rename_fh_cache.patch \ - file://relative_max_socket_path_len.patch \ - file://tcp_no_delay.patch \ - file://0001-daemon.c-Libtirpc-porting-fixes.patch \ - file://0001-attr-fix-utime-for-symlink.patch \ - file://0001-Add-listen-action-for-a-tcp-socket.patch \ - file://no-yywrap.patch \ - " -SRCREV = "c12a5c69a8d59be6916cbd0e0f41c159f1962425" -UPSTREAM_CHECK_GITTAGREGEX = "unfs3\-(?P<pver>.+)" - -PV = "0.9.22+${SRCPV}" - -BBCLASSEXTEND = "native nativesdk" - -inherit autotools -EXTRA_OECONF:append:class-native = " --sbindir=${bindir}" -CFLAGS:append = " -I${STAGING_INCDIR}/tirpc" -EXTRA_OECONF:append = " LIBS=-ltirpc" - -# Turn off these header detects else the inode search -# will walk entire file systems and this is a real problem -# if you have 2 TB of files to walk in your file system -CACHED_CONFIGUREVARS = "ac_cv_header_mntent_h=no ac_cv_header_sys_mnttab_h=no"
nfs-ganesha is actively maintained in contrast with unfs3. glibc tests pass with nfs-ganesha. Signed-off-by: Paulo Neves <ptsneves@gmail.com> --- meta/lib/oeqa/utils/nfs.py | 2 +- ...ix-possible-null-pointer-dereference.patch | 40 +++++ ...-Workaround-for-erroneous-gcc-Werror.patch | 33 ++++ ...ke-nfsv3_optype-guarded-by-_USE_NFS3.patch | 37 ++++ .../nfs-ganesha/nfs-ganesha/module.patch | 27 +++ .../nfs-ganesha/nfs-ganesha_4.0.bb | 42 +++++ ...1-Add-listen-action-for-a-tcp-socket.patch | 54 ------ .../0001-attr-fix-utime-for-symlink.patch | 85 ---------- ...0001-daemon.c-Libtirpc-porting-fixes.patch | 37 ---- .../unfs3/unfs3/alternate_rpc_ports.patch | 158 ------------------ .../unfs3/unfs3/fix_compile_warning.patch | 25 --- ...fix_pid_race_parent_writes_child_pid.patch | 61 ------- .../unfs3/unfs3/no-yywrap.patch | 14 -- .../unfs3/relative_max_socket_path_len.patch | 74 -------- .../unfs3/unfs3/rename_fh_cache.patch | 64 ------- .../unfs3/unfs3/tcp_no_delay.patch | 56 ------- .../unfs3/unfs3/unfs3_parallel_build.patch | 37 ---- meta/recipes-devtools/unfs3/unfs3_git.bb | 45 ----- 18 files changed, 180 insertions(+), 711 deletions(-) create mode 100644 meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0001-Fix-possible-null-pointer-dereference.patch create mode 100644 meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0002-Workaround-for-erroneous-gcc-Werror.patch create mode 100644 meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/0003-Make-nfsv3_optype-guarded-by-_USE_NFS3.patch create mode 100644 meta/recipes-connectivity/nfs-ganesha/nfs-ganesha/module.patch create mode 100644 meta/recipes-connectivity/nfs-ganesha/nfs-ganesha_4.0.bb delete mode 100644 meta/recipes-devtools/unfs3/unfs3/0001-Add-listen-action-for-a-tcp-socket.patch delete mode 100644 meta/recipes-devtools/unfs3/unfs3/0001-attr-fix-utime-for-symlink.patch delete mode 100644 meta/recipes-devtools/unfs3/unfs3/0001-daemon.c-Libtirpc-porting-fixes.patch delete mode 100644 meta/recipes-devtools/unfs3/unfs3/alternate_rpc_ports.patch delete mode 100644 meta/recipes-devtools/unfs3/unfs3/fix_compile_warning.patch delete mode 100644 meta/recipes-devtools/unfs3/unfs3/fix_pid_race_parent_writes_child_pid.patch delete mode 100644 meta/recipes-devtools/unfs3/unfs3/no-yywrap.patch delete mode 100644 meta/recipes-devtools/unfs3/unfs3/relative_max_socket_path_len.patch delete mode 100644 meta/recipes-devtools/unfs3/unfs3/rename_fh_cache.patch delete mode 100644 meta/recipes-devtools/unfs3/unfs3/tcp_no_delay.patch delete mode 100644 meta/recipes-devtools/unfs3/unfs3/unfs3_parallel_build.patch delete mode 100644 meta/recipes-devtools/unfs3/unfs3_git.bb