summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/unfs3/unfs3/tcp_no_delay.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/unfs3/unfs3/tcp_no_delay.patch')
-rw-r--r--meta/recipes-devtools/unfs3/unfs3/tcp_no_delay.patch56
1 files changed, 56 insertions, 0 deletions
diff --git a/meta/recipes-devtools/unfs3/unfs3/tcp_no_delay.patch b/meta/recipes-devtools/unfs3/unfs3/tcp_no_delay.patch
new file mode 100644
index 0000000000..bc78dee361
--- /dev/null
+++ b/meta/recipes-devtools/unfs3/unfs3/tcp_no_delay.patch
@@ -0,0 +1,56 @@
1daemon.c: Add option for tcp no delay
2
3Allow the NFS tcp sockets to conditionally use TCP_NODELAY
4
5Upstream-Status: Pending
6
7---
8 daemon.c | 9 ++++++++-
9 1 file changed, 8 insertions(+), 1 deletion(-)
10
11--- a/daemon.c
12+++ b/daemon.c
13@@ -17,6 +17,7 @@
14 #ifndef WIN32
15 #include <sys/socket.h>
16 #include <netinet/in.h>
17+#include <netinet/tcp.h>
18 #include <arpa/inet.h>
19 #include <syslog.h>
20 #else /* WIN32 */
21@@ -75,6 +76,7 @@ unsigned int opt_mount_port = NFS_PORT;
22 int opt_singleuser = FALSE;
23 int opt_brute_force = FALSE;
24 int opt_testconfig = FALSE;
25+int opt_tcp_nodelay = FALSE;
26 struct in_addr opt_bind_addr;
27 int opt_readable_executables = FALSE;
28 char *opt_pid_file = NULL;
29@@ -208,7 +210,7 @@ static void parse_options(int argc, char
30 {
31
32 int opt = 0;
33- char *optstring = "bcC:de:hl:m:n:prstTuwi:x:y:";
34+ char *optstring = "bcC:de:hl:m:Nn:prstTuwi:x:y:";
35
36 while (opt != -1) {
37 opt = getopt(argc, argv, optstring);
38@@ -295,6 +297,9 @@ static void parse_options(int argc, char
39 exit(1);
40 }
41 break;
42+ case 'N':
43+ opt_tcp_nodelay = TRUE;
44+ break;
45 case 'n':
46 opt_nfs_port = strtol(optarg, NULL, 10);
47 if (opt_nfs_port == 0) {
48@@ -802,6 +807,8 @@ static SVCXPRT *create_tcp_transport(uns
49 sin.sin_addr.s_addr = opt_bind_addr.s_addr;
50 sock = socket(PF_INET, SOCK_STREAM, 0);
51 setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (const char *) &on, sizeof(on));
52+ if (opt_tcp_nodelay)
53+ setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on));
54 if (bind(sock, (struct sockaddr *) &sin, sizeof(struct sockaddr))) {
55 perror("bind");
56 fprintf(stderr, "Couldn't bind to tcp port %d\n", port);