Date: Tue, 30 Jun 2009 14:58:39 -0700 From: Kirk McKusick <mckusick@mckusick.com> To: Attilio Rao <attilio@freebsd.org> Cc: freebsd-fs@freebsd.org, Rick Macklem <rmacklem@uoguelph.ca>, freebsd-current@freebsd.org Subject: Re: umount -f implementation Message-ID: <200906302158.n5ULwdxk002480@chez.mckusick.com> In-Reply-To: <3bbf2fe10906300908p6b0f314di25bab46b03b5933a@mail.gmail.com>
index | next in thread | previous in thread | raw e-mail
Just for the history books, there originally were two forms of forced unmounts. The gentle force (-f) and the brute force (-F) unmount. The -f unmount flushes out all the dirty buffers so that when the unmount completes no data is lost and the filesystem is in a consistent state. The -F unmount invalidates and discards all the dirty buffers without attempting to do any I/O on them. The result is lost data and a possibly inconsistent filesystem. But it will get the job done even if the disk has died or the server has gone away. For reasons that I never tracked down, the -F unmount option was never incorporated into FreeBSD when they did the merge from 4.4BSD-Lite II, so that functionality never made it into the system. It is actually much easier to do than unmount -f since you just walk through and set B_INVAL and B_ERROR on all the dirty buffers for that filesystem. The problem with unmount -f is that it will hang if the server is gone since it will insist on pushing back all the dirty buffers. Kirk McKusickhome | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200906302158.n5ULwdxk002480>
