From owner-freebsd-fs Tue Oct 16 22:32:12 2001 Delivered-To: freebsd-fs@freebsd.org Received: from flood.ping.uio.no (flood.ping.uio.no [129.240.78.31]) by hub.freebsd.org (Postfix) with ESMTP id 60A4F37B405; Tue, 16 Oct 2001 22:32:10 -0700 (PDT) Received: by flood.ping.uio.no (Postfix, from userid 2602) id CC97214C2E; Wed, 17 Oct 2001 07:32:08 +0200 (CEST) X-URL: http://www.ofug.org/~des/ X-Disclaimer: The views expressed in this message do not necessarily coincide with those of any organisation or company with which I am or have been affiliated. To: Matthew Dillon Cc: John Baldwin , fs@FreeBSD.ORG Subject: Re: Some questions regarding vfs / ffs References: <200110170229.f9H2Tph84237@apollo.backplane.com> From: Dag-Erling Smorgrav Date: 17 Oct 2001 07:32:08 +0200 In-Reply-To: Message-ID: Lines: 28 User-Agent: Gnus/5.0808 (Gnus v5.8.8) Emacs/20.7 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: owner-freebsd-fs@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org Dag-Erling Smorgrav writes: > Somebody on IRC suggested changing ffs_sync() to traverse the synclist > instead of the mountpoint's vnode list, and just comparing v_mount to > mp and ignoring vnodes that aren't "ours". It would work, but gives > me goosebumps for some reason. Another possibility, of course, is to have ffs_sync() simply check if the vnode is on a worklist (v_flags & VONWORKLIST != 0) but that requires acquiring the vnode interlock, so we gain nothing. > All of this only solves part of the problem, though - the ffs_sync() > part - there's still something screwy with sched_sync(), but I'll need > to acquite more profiling data to figure out just *what*. Actually, there's nothing screwy about sched_sync(), except that I overlooked the fact that it calls sync_fsync() (through VOP_FSYNC()) which calls ffs_sync(). Judging from collected stats, I'm wondering if there's really any point in calling ffs_sync() (indirectly) from sched_sync(), as it seems to rarely actually *do* much except screw up my interrupt latency. I guess it's useful as a safety net, but I don't really see how a vnode can be dirty and not on the sync list? Ditching the syncer nodes will also (finally) allow FreeBSD laptops to let their disks spin down when idle... DES -- Dag-Erling Smorgrav - des@ofug.org To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-fs" in the body of the message