qga: ignore EBUSY when freezing a filesystem
the current implementation fails if we try to freeze an already frozen filesystem. This can happen if a filesystem is mounted more than once (e.g. with a bind mount). Suggested-by: Christian Theune <ct@flyingcircus.io> Cc: qemu-stable@nongnu.org Signed-off-by: Peter Lieven <pl@kamp.de> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
This commit is contained in:
parent
26de229657
commit
ce2eb6c4a0
@ -1243,6 +1243,9 @@ int64_t qmp_guest_fsfreeze_freeze_list(bool has_mountpoints,
|
||||
* filesystems may not implement fsfreeze for less obvious reasons.
|
||||
* these will report EOPNOTSUPP. we simply ignore these when tallying
|
||||
* the number of frozen filesystems.
|
||||
* if a filesystem is mounted more than once (aka bind mount) a
|
||||
* consecutive attempt to freeze an already frozen filesystem will
|
||||
* return EBUSY.
|
||||
*
|
||||
* any other error means a failure to freeze a filesystem we
|
||||
* expect to be freezable, so return an error in those cases
|
||||
@ -1250,7 +1253,7 @@ int64_t qmp_guest_fsfreeze_freeze_list(bool has_mountpoints,
|
||||
*/
|
||||
ret = ioctl(fd, FIFREEZE);
|
||||
if (ret == -1) {
|
||||
if (errno != EOPNOTSUPP) {
|
||||
if (errno != EOPNOTSUPP && errno != EBUSY) {
|
||||
error_setg_errno(errp, errno, "failed to freeze %s",
|
||||
mount->dirname);
|
||||
close(fd);
|
||||
|
Loading…
Reference in New Issue
Block a user