diff --git a/pmb/helpers/mount.py b/pmb/helpers/mount.py index bea29fa4..472a1d64 100644 --- a/pmb/helpers/mount.py +++ b/pmb/helpers/mount.py @@ -93,8 +93,13 @@ def umount_all_list(prefix, source="/proc/mounts"): if len(words) < 2: raise RuntimeError("Failed to parse line in " + source + ": " + line) - if words[1].startswith(prefix): - ret.append(words[1]) + mountpoint = words[1] + if mountpoint.startswith(prefix): + # Remove "\040(deleted)" suffix (#545) + deleted_str = r"\040(deleted)" + if mountpoint.endswith(deleted_str): + mountpoint = mountpoint[:-len(deleted_str)] + ret.append(mountpoint) ret.sort(reverse=True) return ret diff --git a/test/test_mount.py b/test/test_mount.py index 75b39fde..13d82aab 100644 --- a/test/test_mount.py +++ b/test/test_mount.py @@ -33,6 +33,7 @@ def test_umount_all_list(tmpdir): handle.write("source /test/home/pmos/packages\n") handle.write("source /test\n") handle.write("source /test/proc\n") + handle.write("source /test/dev/loop0p2\\040(deleted)\n") ret = pmb.helpers.mount.umount_all_list("/no/match", fake_mounts) assert ret == [] @@ -42,4 +43,4 @@ def test_umount_all_list(tmpdir): ret = pmb.helpers.mount.umount_all_list("/test", fake_mounts) assert ret == ["/test/var/cache", "/test/proc", "/test/home/pmos/packages", - "/test"] + "/test/dev/loop0p2", "/test"]