Bug 599503

Summary: document that mkmountpoint and umount-all cannot be mixed
Product: [Community] Virtualization Tools Reporter: Jinxin Zheng <jzheng>
Component: libguestfsAssignee: Richard W.M. Jones <rjones>
Severity: low Docs Contact:
Priority: low    
Version: unspecifiedCC: mbooth, virt-maint
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
: 600144 (view as bug list) Environment:
Last Closed: 2011-04-13 08:53:50 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Bug Depends On:    
Bug Blocks: 600144    

Description Jinxin Zheng 2010-06-03 11:50:12 UTC
Description of problem:
umount-all could result in the user-created mountpoints missing while they are actually not deleted.

Version-Release number of selected component (if applicable):

How reproducible:

Steps to Reproduce:
run this guestfish script,
$ guestfish <<EOF
sparse test.img 10M
part-disk /dev/vda mbr
mkfs ext2 /dev/vda1
mkmountpoint /mnt
mount /dev/vda1 /mnt
-mount /dev/vda1 /mnt
-mkmountpoint /mnt

Actual results:
guestfish outputs error with the last mount as if the /mnt mountpoint was never made,
><fs> mount /dev/vda1 /mnt
libguestfs: error: mount: you must mount something on / first

but when trying to create the mountpoint again it says it already exists,
><fs> mkmountpoint /mnt
libguestfs: error: mkmountpoint: /mnt: File exists

Expected results:
mountpoints should still be valid after umount-all.

Additional info:
calling umount with the mounted device will not cause this problem.

Comment 1 Richard W.M. Jones 2010-06-03 14:08:26 UTC
What happens here inside the daemon is that we set the
root_mounted flag to 0, which renders the mountpoint
created by mkmountpoint unusable.

This is a fairly obscure corner case, and a comprehensive
fix for it is complex and risky.  It may be better to just
document this behaviour.

Comment 2 Jinxin Zheng 2010-06-04 07:51:59 UTC
(In reply to comment #1)
> This is a fairly obscure corner case, and a comprehensive
> fix for it is complex and risky.  It may be better to just
> document this behaviour.    

Yes. If you are going to document this please also consider another special behaviour that comes with umount-all.

We have an iso image inside which there is an ext2 image file. This is just like the situation described in the help text of mkmountpoint.

If we do this,

mkmountpoint /cdrom
mkmountpoint /ext2
mount /dev/vda /cdrom
mount-loop /cdrom/ext2fs.img /ext2

we get 'device is busy' error from the umount-all.

The key point is we did the first mount at a place which has a longer path than the second one does.

umount-all decides the umount order by sorting the mountpoints through their lengths. This is ok with most cases, but problematic with the very special case described above.

However this is still not a severe problem in my eyes, hence I'm not opening another bug for this. Just please be aware of this case.

Comment 3 Richard W.M. Jones 2010-07-07 22:26:31 UTC
Updating summary to reflect that we're not going to fix
this, just document the 2 cases described in this bug.

Comment 4 Richard W.M. Jones 2010-10-26 09:48:36 UTC
Patch posted upstream:

Comment 5 Richard W.M. Jones 2011-04-13 08:53:50 UTC
This bug is actually completely fixed (not just documented)
in libguestfs 1.10.
(commit 77df7d6d537cebe05e06bf07e6e4a2082fe6656a)