From d0c208ed43e4541ef321f0d02a53f751dd8e0608 Mon Sep 17 00:00:00 2001 From: Jefferyyen Date: Tue, 3 Dec 2024 22:14:30 +0800 Subject: [PATCH] Umount the device first during mount_usb_storage() (#1587) (BugFix) (#1599) * Umount the device first during mount_usb_storage() (Bugfix) (#1587) To prevent the inserted storage from failing to mount twice, first ensure it is unmounted. Because the OS will auto-mount the inserted storage, the existing subprocess.call(["mount", device_to_mount, FOLDER_TO_MOUNT]) command will cause an error if the format of inserted storage is NTFS. Perform an umount on device_to_mount (e.g., for the media card in #1587, it would be umount /dev/mmcblk0p1) before attempting to mount it again to avoid this issue. * Update usb_read_write.py * Update usb_read_write.py update the comment correctly * Update usb_read_write.py Correct the blank line --- .../checkbox_support/scripts/usb_read_write.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/checkbox-support/checkbox_support/scripts/usb_read_write.py b/checkbox-support/checkbox_support/scripts/usb_read_write.py index 0668e8f10d..3aa2aa4cc0 100644 --- a/checkbox-support/checkbox_support/scripts/usb_read_write.py +++ b/checkbox-support/checkbox_support/scripts/usb_read_write.py @@ -167,9 +167,15 @@ def mount_usb_storage(partition): try: device_to_mount = os.path.join("/dev", partition) - # use pipe so I could hide message like - # "umount: /tmp/tmpjzwb6lys: not mounted" + + # Unmounting the folder ignoring any "not mounted" error messages. subprocess.call(["umount", FOLDER_TO_MOUNT], stderr=subprocess.PIPE) + + # Unmounting the device (e.g., "/dev/mmcblk0p1") to ensure the storage + # device is fully detached. This prevents issues with certain + # filesystem types like NTFS, which cannot be mounted multiple times. + subprocess.call(["umount", device_to_mount], stderr=subprocess.PIPE) + # mount the target device/partition # if the return code of the shell command is non-zero, # means something wrong.