From owner-freebsd-current Tue Apr 27 13:18:29 1999 Delivered-To: freebsd-current@freebsd.org Received: from apollo.backplane.com (apollo.backplane.com [209.157.86.2]) by hub.freebsd.org (Postfix) with ESMTP id 6CC0E15174; Tue, 27 Apr 1999 13:18:22 -0700 (PDT) (envelope-from dillon@apollo.backplane.com) Received: (from dillon@localhost) by apollo.backplane.com (8.9.3/8.9.1) id NAA00464; Tue, 27 Apr 1999 13:18:21 -0700 (PDT) (envelope-from dillon) Date: Tue, 27 Apr 1999 13:18:21 -0700 (PDT) From: Matthew Dillon Message-Id: <199904272018.NAA00464@apollo.backplane.com> To: hackers@FreeBSD.ORG, current@FreeBSD.ORG Subject: NFS Patch #8 for current available - new TCP fixes Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG (fanfair!) NFS Patch #8 for -current is now available. This patch fixes serious bugs w/ NFS/TCP. Probably not *all* the failure conditions, but hopefully most of them. http://www.backplane.com/FreeBSD4/ NFS attempts to realign packet buffers and trods all over the underlying mbufs. For TCP connections, several RPC's may be present in an mbuf chain. The realignment of one of them may destroy the others. This does not occur with UDP because each UDP packet contains only a single rpc. Packet buffers may be unaligned for a number of reasons. The main reason is due to the 14 byte MAC header on the ethernet frame. This causes the remainder of the packet - the ip payload - to NOT be 4-byte aligned. Many ethernet drivers fudge the packet buffer in order to cause the IP payload to be aligned. Some do not. The ones that do not cause the NFS code to realign the packet and it is the nfs_realign() procedure that is broken. So the combination of having the wrong ethernet card in the server and trying to use NFS/TCP would cause some people to have lots of problems while other people might not have any problems. Neither the 'de' nor the 'xl' ethernet drivers align the packet. The 'xl' driver conditionally aligns it for the alpha. Part of the patch fixes the 'xl' driver to unconditionally align the packet buffer in order to improve NFS performance. I could not do the same for the 'de' driver because I am unsure if the dec chipset can handle an unaligned start address. The patch also fixes the nfs_realign() code so it will work properly with unaligned packets. The patch has also been updated to patch against the latest -current. As usual, any and all feedback will be appreciated. There are still NFS issues to be resolved, including a number related to AMD ( automountdaemon). Depending on how my testing works, further TCP patches may be in the wings. -Matt Matthew Dillon To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message