I was actually looking for something else when I noticed that
Linux umount has a "-l" option. What that does is solve the problem of "file system busy" (see
Why can't I unmount my CDROM?). Well, of course it doesn't really unmount a busy file system, but it does let you say that you want that done as soon as possible, I don't know when this was added, but it works as advertised.
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.)
The following was done on a Fedora 9 system:
# create a couple of small filesystems to play with
lvcreate -L 2G -n test1fs VolGroup00
lvcreate -L 2G -n test2fs VolGroup00
mkfs -t ext3 /dev/VolGroup00/test1fs
mkfs -t ext3 /dev/VolGroup00/test2fs
mount /dev/VolGroup00/test1fs /testfs
OK, now login on another screen and try to unmount that. Of course
we'll be told that it is "busy":
# umount /testfs
umount: /testfs: device is busy
No surprise there. To fix, we'd track down the process interfering with
our desire by way of lsof or fuser, kill it off and proceed with our unmount.
But with -l, we can do it now:
# umount -l /testfs
No complaints, and a check of "mount" shows it is really gone. This
doesn't interfere at all with the process that still has it open: you
can create new files, delete old ones, move around.. but the moment
you cd off the mount, you can't get back.
But while you are there, nothing stops us from mounting
something else at the same point:
mount /dev/VolGroup00/test2fs /testfs
In fact, as strange as it sounds, we could have mounted test1fs again..
about the only thing we can't do is "fsck /dev/VolGroup00/test1fs" - that
will rightfully tell us that the device really is busy. Unfortunately,
neither lsof nor fuser can tell me what process is keeping that
unavailable, but there have to be limits somewhere, right?
I wouldn't recommend using this as a matter of course, but there
certainly are times when it could be handy. If you know a process will
finish up by itself, this can allow you to let it do so while you get
on with whatever you need to do. It's a helpful addition.