From owner-freebsd-hackers Tue Nov 14 09:27:20 1995 Return-Path: owner-hackers Received: (from root@localhost) by freefall.freebsd.org (8.6.12/8.6.6) id JAA24140 for hackers-outgoing; Tue, 14 Nov 1995 09:27:20 -0800 Received: from Root.COM (implode.Root.COM [198.145.90.17]) by freefall.freebsd.org (8.6.12/8.6.6) with ESMTP id JAA24122 for ; Tue, 14 Nov 1995 09:27:14 -0800 Received: from corbin.Root.COM (corbin [198.145.90.50]) by Root.COM (8.6.12/8.6.5) with ESMTP id JAA28840; Tue, 14 Nov 1995 09:27:11 -0800 Received: from localhost (localhost [127.0.0.1]) by corbin.Root.COM (8.6.12/8.6.5) with SMTP id JAA00436; Tue, 14 Nov 1995 09:25:56 -0800 Message-Id: <199511141725.JAA00436@corbin.Root.COM> To: Terry Lambert cc: rashid@rk.ios.com (Rashid Karimov), jgreco@brasil.moneng.mei.com, hackers@freebsd.org Subject: Re: Odd crash after inode depletion.. In-reply-to: Your message of "Tue, 14 Nov 95 09:05:04 MST." <199511141605.JAA19934@phaeton.artisoft.com> From: David Greenman Reply-To: davidg@Root.COM Date: Tue, 14 Nov 1995 09:25:44 -0800 Sender: owner-hackers@freebsd.org Precedence: bulk >> > This is endemic to the move from regualr to circular queues. I don't know >> > why, but going back to the old queues fixes it. >> >> Terry , could you pls post here the patch which fixes the >> thing ? The problem doesn't bug us for some time - but if >> it will return - I'll need the fix > >Going back isn't the correct fix. > >The correct fix is to find where the tail wraps and fix it. > >It would be difficult for me to find this; I've changed large portions >of this code locally... I don't even allocate nodes the same way any >more because I want to vary cache discard rates by file system type >(so I have a watermarked pool on a per FS basis for node allocation). > ... > >This is a pretty obvious bug. When the circular queue wraps, vp will not >be NULL. ... >The move to circular queues is one of those half-cocked changes that >you see made for purely aesthetic reasons instead of technical ones. >The move to circular queues for the mountlists is one of the things >that made my FS layering patches not apply cleanly. Mountlists are >effectively initialization code, and one should not optimize such >code unduly: its execution time is irrelevant. Vnode allocation is >more time critical, but a circular queue is a bad deal all around >in terms of doubling the object protection hits and cache coherency >hassles in an MP/MT environment. It is a pessimization in that >situation. 8-(. Do you know the difference of appearance of a cicular queue in our sources? Based on your comments, I must conclude that you do not. tailq's are NOT circular queues. The vnode free list is NOT a circular queue and it never has been in FreeBSD. The change to a circular queue for the mountlist was NOT made for aesthetic reasons. It was made because it is required to traverse the mount queue in the reverse direction in order to properly dismount filesystems (because of mount point dependencies). You can only do this by using circleq's. The only reason the code works at all in pre-2.2 kernels is because we are doing forcible dismounts on all the filesystems. This change becomes required if you want to deal with union and other 4.4BSD special filesystems. Look Terry, I'm not the only one who is getting very annoyed at your continuous spread of mis-truths and baseless criticisms. You would be doing yourself and everyone else a favor if you would double check your facts and assumptions first and stop making such completely wrong comments. -DG