From owner-freebsd-fs@FreeBSD.ORG Mon Jul 24 14:55:40 2006 Return-Path: X-Original-To: fs@freebsd.org Delivered-To: freebsd-fs@FreeBSD.ORG Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id E0EF416A4E0 for ; Mon, 24 Jul 2006 14:55:40 +0000 (UTC) (envelope-from rick@snowhite.cis.uoguelph.ca) Received: from mailhub.cs.uoguelph.ca (mailhub.cs.uoguelph.ca [131.104.94.205]) by mx1.FreeBSD.org (Postfix) with ESMTP id 84CC543D67 for ; Mon, 24 Jul 2006 14:55:38 +0000 (GMT) (envelope-from rick@snowhite.cis.uoguelph.ca) Received: from snowhite.cis.uoguelph.ca (snowhite.cis.uoguelph.ca [131.104.48.1]) by mailhub.cs.uoguelph.ca (8.13.1/8.13.1) with ESMTP id k6OEtagn011425 for ; Mon, 24 Jul 2006 10:55:37 -0400 Received: (from rick@localhost) by snowhite.cis.uoguelph.ca (8.9.3/8.9.3) id KAA63411 for fs@freebsd.org; Mon, 24 Jul 2006 10:56:50 -0400 (EDT) Date: Mon, 24 Jul 2006 10:56:50 -0400 (EDT) From: rick@snowhite.cis.uoguelph.ca Message-Id: <200607241456.KAA63411@snowhite.cis.uoguelph.ca> To: fs@freebsd.org X-Scanned-By: MIMEDefang 2.52 on 131.104.94.205 Cc: Subject: freebsd4.11 patch for nfs over tcp X-BeenThere: freebsd-fs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Filesystems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 Jul 2006 14:55:41 -0000 I figured that putting patches for FreeBSD4 in the bugtracker was passe, so I'm posting it here. I noticed that performance of nfs over TCP was abismal under certain circumstances. It turned out that TCP_NODELAY wasn't being set, because sopt_dir wasn't filled in. Here's a simple diff -c patch, rick ps: sopt_dir also isn't set for KEEPALIVE, but it doesn't matter for that one. --- FreeBSD4.11 diff -c patch *** nfs_socket.c.orig Mon Jul 24 10:37:45 2006 --- nfs_socket.c Mon Jul 24 10:38:39 2006 *************** *** 339,344 **** --- 339,345 ---- bzero(&sopt, sizeof sopt); sopt.sopt_level = IPPROTO_TCP; + sopt.sopt_dir = SOPT_SET; sopt.sopt_name = TCP_NODELAY; sopt.sopt_val = &val; sopt.sopt_valsize = sizeof val; *** nfs_syscalls.c.orig Mon Jul 24 10:37:57 2006 --- nfs_syscalls.c Mon Jul 24 10:39:12 2006 *************** *** 376,381 **** --- 376,382 ---- bzero(&sopt, sizeof sopt); sopt.sopt_level = IPPROTO_TCP; + sopt.sopt_dir = SOPT_SET; sopt.sopt_name = TCP_NODELAY; sopt.sopt_val = &val; sopt.sopt_valsize = sizeof val;