Linux's umount -f forces IO errors

January 23, 2008

Here is something that I had to find the moderately hard way:

When used on an NFS filesystem, Linux's umount -f will force any outstanding IO operations to fail with an error, whether or not the unmount will succeed.

This can be both good and bad, but on the whole I think it's mostly bad.

If the NFS server has died completely and the outstanding IO can never succeed, you do want things to abort now instead of hanging around. In this case umount -f's behavior is what you want, although it doesn't really go far enough; ideally it would force the filesystem to unmount no matter what.

But umount -f is also commonly used to try to unmount unused NFS filesystems when the NFS has crashed temporarily and is being recovered. (Traditionally a basic umount will hang if it cannot talk to the NFS server; this may have changed in Linux by now, but if it has the manpages haven't caught up and so I suspect that the sysadmin habit hasn't either.)

If the filesystem is actually in use, you want the unmount attempt to quietly fail. Instead what you get is artificial, unnecessary IO errors for IO that would complete in due time. If you are lucky, programs merely complain loudly to users, alarming them, and manage to recover somehow; otherwise, programs malfunction and your users may lose data.

I believe that umount -f is far more often used in the second case than in the first case, and thus that this causes more problems than it cures.

Written on 23 January 2008.
« Why I believe that you want Solaris if you want ZFS
The weird effects of Firefox's remote control on Unix »

Page tools: View Source, Add Comment.
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Wed Jan 23 01:24:29 2008
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.