Is_Mounted: fix symlink detection
this will also fix an issue when using f2fs repair/format which sometimes occurs.
note:
for reproducing it is important using f2fs as first / only partition file system on userdata.
only then the format button would try to format with F2FS at all.
related repair error:
> Repairing Data using fsck.f2fs...
> I:Repair command: /sbin/fsck.f2fs /dev/block/mmcblk0p50
> Info: Mounted device!
> Error: Not available on mounted device!
> /sbin/fsck.f2fs /dev/block/mmcblk0p50 process ended with ERROR: 255
> Unable to repair Data.
related format error:
> Formatting Data using mkfs.f2fs...
> I:Using newer mkfs.f2fs
> I:mkfs.f2fs command: mkfs.f2fs -d1 -f -O encrypt -O quota -O verity -w 4096 /dev/block/mmcblk0p50 6078464 && sload.f2fs -t /data /dev/block/mmcblk0p50
>
> F2FS-tools: mkfs.f2fs Ver: 1.10.0 (2018-01-30)
>
> Info: Disable heap-based policy
> Info: Debug level = 1
> Info: Label =
> Info: Trim is enabled
> Info: Mounted device!
> Error: Not available on mounted device!
> mkfs.f2fs -d1 -f -O encrypt -O quota -O verity -w 4096 /dev/block/mmcblk0p50 6078464 && sload.f2fs -t /data /dev/block/mmcblk0p50 process ended with ERROR: 255
> Unable to wipe Data.
> Unable to format to remove encryption.
Change-Id: Ic941b1e54476d9510fbf4a51d19b4d21f2e0426b
diff --git a/partition.cpp b/partition.cpp
index d4a4532..b0cd234 100755
--- a/partition.cpp
+++ b/partition.cpp
@@ -1554,6 +1554,15 @@
test_path = Mount_Point + "/../.";
if (stat(test_path.c_str(), &st2) != 0) return false;
+ // Check to see if a symlink mount point exists and is mounted
+ if (!Symlink_Mount_Point.empty()) {
+ scan_mounted_volumes();
+ const MountedVolume * sml = find_mounted_volume_by_mount_point(Symlink_Mount_Point.c_str());
+ if (sml != nullptr) {
+ return true;
+ }
+ }
+
// Compare the device IDs -- if they match then we're (probably) using tmpfs instead of an actual device
int ret = (st1.st_dev != st2.st_dev) ? true : false;
return ret;