From owner-freebsd-hackers Sat Oct 31 12:15:26 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id MAA09929 for freebsd-hackers-outgoing; Sat, 31 Oct 1998 12:15:26 -0800 (PST) (envelope-from owner-freebsd-hackers@FreeBSD.ORG) Received: from wrath.cs.utah.edu (wrath.cs.utah.edu [155.99.198.100]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id MAA09924 for ; Sat, 31 Oct 1998 12:15:25 -0800 (PST) (envelope-from vanmaren@fast.cs.utah.edu) Received: from fast.cs.utah.edu (fast.cs.utah.edu [155.99.212.1]) by wrath.cs.utah.edu (8.8.8/8.8.8) with SMTP id NAA16842 for ; Sat, 31 Oct 1998 13:15:22 -0700 (MST) Received: by fast.cs.utah.edu (8.6.10/utah-2.15-leaf) id NAA22131; Sat, 31 Oct 1998 13:15:21 -0700 Date: Sat, 31 Oct 1998 13:15:21 -0700 From: vanmaren@fast.cs.utah.edu (Kevin Van Maren) Message-Id: <199810312015.NAA22131@fast.cs.utah.edu> To: hackers@FreeBSD.ORG Subject: Re: nfs/amd hangs / getattr request flood problem Cc: danderse@cs.cs.utah.edu, mike@fast.cs.utah.edu, sclawson@cs.cs.utah.edu Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG I looked at this a bit more. I am currently wondering about the comment in nfs/nfs_subs.c nfs_getattrcache(), which says: "XXX n_mtime doesn't seem to be updated on a miss-and-reload". Peter added it in version 1.54, when he redid much of this function. Dumping the three numbers in the check, I get this: if ((time_second - np->n_attrstamp) >= timeo) { printf("%s: miss. time_second=%d, n_attrstamp=%d, timeo=%d\n", __FUNCTION__,time_second, np->n_attrstamp, timeo); nfsstats.attrcache_misses++; return (ENOENT); } nfs_getattrcache: miss. time_second=909863755, n_attrstamp=909863755, timeo=0 nfs_getattrcache: miss. time_second=909863755, n_attrstamp=909863755, timeo=0 nfs_getattrcache: miss. time_second=909863755, n_attrstamp=909863755, timeo=0 nfs_getattrcache: miss. time_second=909863755, n_attrstamp=909863755, timeo=0 nfs_getattrcache: miss. time_second=909863755, n_attrstamp=909863755, timeo=0 I then added a printf after the if(), and got a bunch of these: nfs_getattrcache: hit. time_second=909864329, n_attrstamp=909864319, timeo=60 nfs_getattrcache: hit. time_second=909864329, n_attrstamp=909864319, timeo=60 nfs_getattrcache: hit. time_second=909864329, n_attrstamp=909864319, timeo=60 So, the question then becomes, "why is the timeout set to 0"? On all the file/directories in the filesystem, it is set to 60. However, the mount point itself is being set to 0. This results in a UDP message from the kernel to amd, which then sends a UDP reply back to the kernel using its info. However, that brings us back to the comment... Kevin To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message