Force unmount in Ubuntu, to fix problems after netbook sleep mode

3

2

The only thing I actually need to know here, is how to force an unmount while device is busy. umount -f doesn't work. The following description is just background for why I need to do this, in case someone manages to come up with a better solution. If there it is not possible to do this unmount, I'll gladly accept an explanation for why not as the answer.

The problem is, whenever I put my netbook on sleep mode, my mount point becomes broken. The mount does still exist, and running mount displays it as normal:

/dev/mmcblk0p1 on /home/ilari/storage type ext4 (rw,nosuid,nodev,uhelper=hal)

However any attempt to read/write to it fails with an Input/output error.

If there are any programs open, attempting to unmount the device, fails with

umount: /home/ilari/storage: device is busy

The problem seems to be that the device /dev/mmcblk0 has disappeared from the system while it was sleeping. But this is where the weird stuff happens. The previous device is still available, only it has now become /dev/mmcblk1! And I can mount it again to the same point, which makes the output of mount rather funny

/dev/mmcblk0p1 on /home/ilari/storage type ext4 (rw,nosuid,nodev,uhelper=hal)
/dev/mmcblk1p1 on /home/ilari/storage type ext4 (rw,nosuid,nodev,uhelper=hal)

The thing is, when I do this, the mount point works just as it did before the sleep! The programs that were open are able to continue using the file system again, just as if nothing had happened.

But having the system accumulate multiple (failed) devices seems rather sketchy. So I'd like to unmount the previous mount point before remounting the "new" device to the same point.

How can I force the unmount when the device is busy? Preferably automatically at wakeup, and with automatic remount. Any help is appreciated.

(I could of course close all the open programs, and then unmount, but that pretty much defeats the purpose of the sleep mode anyway.)

EDIT: As mentioned in the comments, it's probably a good idea to unmount the system before going to sleep, then remount it at wakeup. In fact, this seems to even stop the device from changing it's index number, so it remains as /dev/mmcblk0. The problem is I can only unmount it after closing all the programs that are using it. (Note that this works after sleep too - by closing all the programs I can always unmount the broken point.) umount -f is of no help either, responding with an additional umount2: Device or resource busy.

I'm using Ubuntu Netbook Remix 9.10 on Acer Aspire One. The mount point is in fstab by the UUID of the file system (which is of course why the remount works even though the device name has changed). Naturally, an alternative slution to this is to stop the device from changing it's number, but I fear that'll be a much harder problem.

Ilari Kajaste

Posted 2009-11-20T10:34:08.473

Reputation: 3 282

I have had a similar issue (a mount refusing to unmount because it is busy) with Windows shares when the machine that the share is on is no longer available, including times when the machine looking at the share has not been susended. – David Spillett – 2009-11-20T10:39:56.497

1have you tried unmounting before putting the system to sleep, and remounting after waking up? your alt. solution seems like a job for udev, but that may not help if the device is "hung" on wake. have you filed a bug with ubuntu? – quack quixote – 2009-11-20T10:40:13.813

@~quack: Actually, unmounting before sleeping seems to keep the device number constant. However, I still can't do the unmount before sleep while there are open programs (that are using files on the mount point). – Ilari Kajaste – 2009-11-20T12:31:40.023

Answers

3

Have you tried the -f flag to umount?

umount -f /home/ilari/storage

Doing someting like this automatically, would involve a little script in /etc/pm/sleep.d/. But I recommend you un-mount when going to sleep and re-mount on wake-up. I recently got a good answer that should tell you what to do to write that little script.

innaM

Posted 2009-11-20T10:34:08.473

Reputation: 9 208

-f doesn't help, umount2: Device or resource busy. I'll fix the post to mention this as well. – Ilari Kajaste – 2009-11-20T12:11:31.007

Yes, unmounting when going to sleep is indeed probably a good idea, if I manage to do the unmount. Thank you for the link! – Ilari Kajaste – 2009-11-20T12:16:53.697

6

Does umount -l /home/ilari/storage work? I don't really have a good partition to test this on, but it might do what you want.

Brendan Long

Posted 2009-11-20T10:34:08.473

Reputation: 1 728

umount -l is dangerous and won't help with device names incrementing. – Tom Hale – 2017-09-03T09:14:04.273

Well, in fact, it does work! No more duplicates shown with mount. Yet the system still keeps increasing the device number in case there are programs open, so I'm not sure if this is deep down any better than the duplicate mounts. At least it looks a bit better, and that's what I was asking for. The bounty and accepted answer was misplaced because of bounty timeout, sorry! I'd gladly donate a secondary bounty to you if it was possible. – Ilari Kajaste – 2009-11-30T20:14:25.923

No worries. I figured it would have that effect (umount -l removes the device from the mount list and then mounts it when it can), I was just hoping that it might consider it to be unmounted after sleeping. – Brendan Long – 2009-12-01T02:23:14.697