umount -f implementation

Kirk McKusick mckusick at mckusick.com
Tue Jun 30 22:37:43 UTC 2009


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


More information about the freebsd-fs mailing list