[gparted] Fix unmount error when unmounting below a bind mount point (!89)
- From: Mike Fleetwood <mfleetwo src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gparted] Fix unmount error when unmounting below a bind mount point (!89)
- Date: Fri, 17 Sep 2021 16:17:23 +0000 (UTC)
commit 6f811cfaca4d8b0e8cad1dfd1bd81c336fc8528b
Author: Movie Ma <mawei uniontech com>
Date: Fri Aug 20 12:33:12 2021 +0000
Fix unmount error when unmounting below a bind mount point (!89)
Bind mounts duplicate part of the file system hierarchy to an additional
mount point [1]. When mounting and unmounting a second file system
below a duplicating bind mount Linux automatically presents this lower
file system as being mounted multiple times. GParted displays these
multiple mount points. However using GParted to unmount this lower file
system reports an error that the second mount point is no longer
mounted, because all were unmounted by the first unmount command.
Setup:
1. Mount an upper file system
# mkdir /mnt/1
# mount /dev/sdb1 /mnt/1
# fgrep sdb /proc/mounts
/dev/sdb1 /mnt/1 ext4 rw,seclabel,relatime,data=ordered 0 0
2. Bind mount it to a second directory
# mkdir /mnt/b1
# mount --bind /mnt/1 /mnt/b1
# fgrep sdb /proc/mounts
/dev/sdb1 /mnt/1 ext4 rw,seclabel,relatime,data=ordered 0 0
/dev/sdb1 /mnt/b1 ext4 rw,seclabel,relatime,data=ordered 0 0
3. Mount a file system below the first
# mkdir /mnt/1/lower
# mount /dev/sdb2 /mnt/1/lower
# fgrep sdb /proc/mounts
/dev/sdb1 /mnt/1 ext4 rw,seclabel,relatime,data=ordered 0 0
/dev/sdb1 /mnt/b1 ext4 rw,seclabel,relatime,data=ordered 0 0
/dev/sdb2 /mnt/1/lower xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
/dev/sdb2 /mnt/b1/lower xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
Two mount records for sdb2 were added to /proc/mounts from one mount
command.
Then use GParted to unmount sdb2. It reports this error dialog:
+-------------------------------------+
| |
| Could not unmount /dev/sdb2 |
| |
| # umount -v '/mnt/b1/lower' |
| umount: /mnt/b1/lower: not mounted. |
+-------------------------------------+
| [ OK ] |
+-------------------------------------+
Fix by checking that the file system is still mounted before each
unmount attempt.
[1] mount (8), Description, Bind mount operation
https://man7.org/linux/man-pages/man8/mount.8.html#DESCRIPTION
Closes !89 - Fix unmount error when unmounting below a bind mount point
src/Win_GParted.cc | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
---
diff --git a/src/Win_GParted.cc b/src/Win_GParted.cc
index 75ea445e..fcb086eb 100644
--- a/src/Win_GParted.cc
+++ b/src/Win_GParted.cc
@@ -2847,11 +2847,17 @@ bool Win_GParted::unmount_partition( const Partition & partition, Glib::ustring
}
else
{
+ Glib::ustring checkmount = "grep -w " + Glib::shell_quote(fs_mountpoints[i]) + "
/proc/mounts";
Glib::ustring cmd = "umount -v " + Glib::shell_quote( fs_mountpoints[i] );
Glib::ustring dummy;
Glib::ustring umount_error;
- if ( Utils::execute_command( cmd, dummy, umount_error ) )
- umount_errors.push_back( "# " + cmd + "\n" + umount_error );
+
+ // Check mount point is still mounted
+ if (! Utils::execute_command(checkmount, dummy, umount_error))
+ {
+ if (Utils::execute_command(cmd, dummy, umount_error))
+ umount_errors.push_back("# " + cmd + "\n" + umount_error);
+ }
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]