Note: This bug is displayed in read-only format because
the product is no longer active in Red Hat Bugzilla.
RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
DescriptionRichard W.M. Jones
2012-07-09 15:17:54 UTC
+++ This bug was initially created as a clone of Bug #838592 +++
The current design of guestmount allows a race condition when
unmounting a disk image:
guestmount -a disk.img -i /mnt
# copy things into /mnt
fusermount -u /mnt
# immediately try to use 'disk.img' <-- UNSAFE
The problem is that guestmount cleanup happens asynchronously
after fusermount has returned. It is not safe to use 'disk.img'
until guestmount has exited, but there is no simple way to tell
when it has exited.
Suggest adding 'guestmount --pid-file=...' option so that a
PID file can be written, and then programs can wait for the PID
to exit after the fusermount.
Also we should document this.
--- Additional comment from pbrady on 2012-07-09 10:44:37 EDT ---
The same issue is referenced here:
http://code.google.com/p/s3ql/issues/detail?id=159
which in turn references this thread on the subject from 2006:
http://thread.gmane.org/gmane.comp.file-systems.fuse.devel/3903
And another case from 2008:
http://permalink.gmane.org/gmane.comp.file-systems.fuse.devel/6502
So it's been on the TODO list for 6 years.
--- Additional comment from rjones on 2012-07-09 11:14:46 EDT ---
Patches posted:
https://www.redhat.com/archives/libguestfs/2012-July/msg00027.html
Only patches 1, 3 and 4 are really relevant to this bug.
Patch 2 is a doc fix in a related part of the man page.
the time might quite short, after fusermount return, and before guestmount finished cleanup, so not quite easy to reproduce, any suggestion for this, Rich?
Comment 3Richard W.M. Jones
2012-11-08 08:58:52 UTC
I think you just need to check that RHEL 6.4 guestmount
has the --pid-file option.
The race condition has *not* been fixed (and cannot be fixed).
The fix is for callers -- OpenStack in this case -- to use
the guestmount --pid-file option.
$ guestmount --version
guestmount 1.16.32rhel=6,release=3.el6
$ guestmount --pid-file
guestmount: option '--pid-file' requires an argument
Try `guestmount --help' for more information.
Comment 4Richard W.M. Jones
2012-11-08 09:01:25 UTC
.. and check that --pid-file actually writes a PID file!
[root@station2 tmp]# guestmount --version
guestmount 1.16.32rhel=6,release=3.el6
the solution is "Suggest adding 'guestmount --pid-file=...' option so that a
PID file can be written, and then programs can wait for the PID
to exit after the fusermount."
[root@station2 tmp]# guestmount --pid-file pid -a RHEL-Server-5.9-32-pv.raw -i test
[root@station2 tmp]# cat pid
6043
so other program could get the pid from file, and wait for the $pid process to exit, to avoid the race condition,
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.
For information on the advisory, and where to find the updated
files, follow the link below.
If the solution does not work for you, open a new bug report.
http://rhn.redhat.com/errata/RHBA-2013-0324.html