Why won't 8.2 umount -f?

Peter Maloney peter.maloney at brockmann-consult.de
Tue Feb 14 09:14:44 UTC 2012


On 02/14/2012 04:18 AM, Rick Macklem wrote:
> Doug Barton wrote:
>> On 02/13/2012 18:23, Rick Macklem wrote:
>>> Doug Barton wrote:
>>>> Is there some magic I'm missing to convince an 8.2 system to umount
>>>> -f?
>>>> I had an NFS server crash, so I'm trying to get the mounts updated.
>>>> All
>>>> of the 7.x systems happily did 'umount -f', but the 8.x systems
>>>> (mostly
>>>> 8.2-pN) are just hanging forever.
>>>>
>>>> Is this a bug, or is it something I'm missing?
>>>>
>>> Well, I didn't realize that a 7.n system would "umount -f" an NFS
>>> mount when the server was down and there were dirty blocks that
>>> needed to be written back, but I don't know.
>> I'm doubtful that any of those systems had dirty blocks.
>>
>>> (I seem to recall that
>>> someone encouraged me to MFC one of my changes related to this back
>>> to stable/7, but I'm not sure if it mattered?)
>> Please don't unless you can verify that it doesn't make this situation
>> worse. :)
>>
>>> I have pretty well fixed the new client w.r.t. this except for the
>>> case where you do a "umount <path>" and that gets hung. Once a non
>>> "-f"
>>> umount gets hung, there is nothing you can do, because the mount
>>> point is
>>> locked up, so a subsequent "umount -f" can't get as far as
>>> nfs_umount().
>> I'm aware of this issue, and I did 'umount -f' first. But I wonder if
>> this isn't something that should be fixed because I think most users
>> would expect that 'umount -> umount -f' would be the natural
>> progression, similar to 'kill -> kill -9'.
>>
> I suspect that is "very difficult" to fix. The regular "umount /mnt" will
> stuck somewhere inside vinvalbuf() trying to flush blocks back to the server
> while holding a lock on the mount point. Although kib@ is the guy who
> would most likely know, I don't think it would be easy to get it to come
> out ok. For example, one approach might be to make all the sleeps interruptible
> and then add code to gracefully handle an EINTR return from them and then
> release locks as they return and..... well it's not something I would want
> to tackle.
>
Lately (last 5 years or so), Linux seems to always hang or fail on
"umount -f mountpoint", but there is another option "-l" which always
works, even after "umount" or "umount -f" fails. I've never seen
corruption from NFS using "-l", which I use often. So if it is very
difficult to fix -f, why not add -l?

       -l     Lazy  unmount.  Detach  the  filesystem  from  the 
filesystem hierarchy now, and cleanup all references to the filesystem
as soon as it is not busy anymore. (Requires kernel 2.4.11 or later.)

       -f     Force unmount (in case of an unreachable NFS system). 
(Requires kernel 2.1.116 or later.)


And I realize they are not equivalent in all ways, but in cases of
mounts that are hung and will never work again, it works the same.
"cleanup ... as soon as it is not busy" probably means never clean up if
it is hung, but that is similar enough to "-f".



>>> My guess is that the old (default for 8.n) client isn't fixed for
>>> this. If you "grep MNTK_UNMOUNTF" in the sources, you'll see it
>>> used some in the old/regular client, but not as much as the new one.
>>>
>>> You also need a fairly recent (can't remember if that is in 8.2)
>>> version of umount.c, since the code had a "sync();" at the beginning
>>> of it that would hang before even getting to the umount(2) syscall.
>>>
>>> Bottom line, I think the newnfs client (the default for 9.0) can
>>> do this, but I'm doubtful the old/reguler one can. (I also wouldn't
>>> be surprised if there is still a bug other than the above mentioned
>>> one w.r.t. doing a "umount /mnt" and getting that hung before trying
>>> "umount -f /mnt".
>> Is the new client in 8-stable up to date relevant to 9.0, and/or is it
>> considered safe to use in production?
>>
>>
>> Thanks,
>>
>> Doug
>>
>> --
>>
>> It's always a long day; 86400 doesn't fit into a short.
>>
>> Breadth of IT experience, and depth of knowledge in the DNS.
>> Yours for the right price. :) http://SupersetSolutions.com/
> _______________________________________________
> freebsd-fs at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-fs
> To unsubscribe, send any mail to "freebsd-fs-unsubscribe at freebsd.org"


-- 

--------------------------------------------
Peter Maloney
Brockmann Consult
Max-Planck-Str. 2
21502 Geesthacht
Germany
Tel: +49 4152 889 300
Fax: +49 4152 889 333
E-mail: peter.maloney at brockmann-consult.de
Internet: http://www.brockmann-consult.de
--------------------------------------------



More information about the freebsd-fs mailing list