6 Apr 2000 green   » (Journeyer)

Well, I had a weird problem yesterday. It seems FreeBSD's NFS really isn't as robust as it should be (*cough* not as if I think NFS is robust itself...). I was testing an ISO9660 image to be burned by vnconfig(8)ing it on /dev/vn0 and mount_cd9660(8)ing it on. Well, I meant to unmount it, but I typed "mount /mnt" instead of "umount /mnt" and didn't notice until the morning.

By the morning, my computer's internet connection, a sad/lowly modem, had been disconnected. I went to do things on the box, and things tried to work with /mnt. Well, what /mnt was defined as was a hard NFS mount of sunsite (uk) :( The logs showed that there was an error 65 looking up the host (No route to host) due to the PPP disconnection.

I spent about 30 minutes trying to unmount that bastard. It really must be a bug that makes things stick on the "nfsrcvlk" wait channel. Long story short, after everything, I could not unmount it, and had to shutdown -r (while the bufdaemon couldn't be stopped because of the broken NFS mount...), and I ended up having the disks fscked before the system next started up.

I've learned a few things from this. One, there are big problems with hard mounts. It's definitely a bug that the NFS mount doesn't start working again after the network connection returns, and things just keep getting wedged. I think I shut down the machine with >5 wedged processes in the "nfsrcvlk" wchan... Two, hard mounts are WAY too much trouble to be the default. I'm going to immediately start lobbying for changing the default to a soft or intr mount. Three, mount(8) lets you make mistakes too easily. The mistake in question is mounting something directly over something else, non-union. This capability is almost always a mistake, and I can see other people facing the same problem. My solution here is to make it an error in mount(8) to mount something directly over an already mounted mount point, but of course create an option to force it. It should be allowed by default to mount something with the "union" option over another mount point, as that is a valid layering technique (when working?). It's just not right to allow someone to mount something directly over something else without a fuss!

I hope that some good will come of the mess I got myself into!

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!