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>
next in thread | previous in thread | raw e-mail | index | archive | help
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 McKusick
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200906302158.n5ULwdxk002480>