From owner-freebsd-hackers Sun Oct 20 12:44:40 2002 Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 4523137B401; Sun, 20 Oct 2002 12:44:39 -0700 (PDT) Received: from apollo.backplane.com (apollo.backplane.com [216.240.41.2]) by mx1.FreeBSD.org (Postfix) with ESMTP id E01AC43E9C; Sun, 20 Oct 2002 12:44:38 -0700 (PDT) (envelope-from dillon@apollo.backplane.com) Received: from apollo.backplane.com (localhost [127.0.0.1]) by apollo.backplane.com (8.12.5/8.12.4) with ESMTP id g9KJiQPQ034149; Sun, 20 Oct 2002 12:44:27 -0700 (PDT) (envelope-from dillon@apollo.backplane.com) Received: (from dillon@localhost) by apollo.backplane.com (8.12.5/8.12.4/Submit) id g9KJiQTf034148; Sun, 20 Oct 2002 12:44:26 -0700 (PDT) (envelope-from dillon) Date: Sun, 20 Oct 2002 12:44:26 -0700 (PDT) From: Matthew Dillon Message-Id: <200210201944.g9KJiQTf034148@apollo.backplane.com> To: David Schultz Cc: Poul-Henning Kamp , Maxim Sobolev , hackers@FreeBSD.ORG Subject: Re: Patch to allow a driver to report unrecoverable write errors to the buf layer References: <3DB048B5.21097613@FreeBSD.org> <28472.1035014051@critter.freebsd.dk> <20021020043706.GA23972@HAL9000.homeunix.com> <200210200457.g9K4vbAE030661@apollo.backplane.com> <20021020051241.GA24293@HAL9000.homeunix.com> Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG :Then how about trying to solve a slightly easier problem? When :the filesystem is forcibly unmounted, would it be possible to seek :out and destroy all busy buffers associated with it that couldn't :be written? This isn't quite as nice a solution as getting the :system to automatically give up, but it's better than :necessitating a reboot to work around the problem. That seems reasonable to me, though I'm full-up on work and can't do it myself. You would need a flag to record the fact that an error occured that only the umount code looks at (the main ERROR flag must be cleared when the buffer is re-dirtied and cannot be used for this purpose), then the umount code could pass a flag to vinvalbuf or equivalent to cause dirty-but-previously-errored-out buffers to be discarded. It would be about three hour's worth of work for someone to do this (including testing and review). -Matt Matthew Dillon To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message