From cf9577a40edd7c3f8bebcf02aaccb7ef441e7dac Mon Sep 17 00:00:00 2001 From: OpenGnSys Support Team Date: Fri, 14 Feb 2025 13:07:34 +0100 Subject: [PATCH] fs: call wipefs partition before formatting partition call wipefs before formatting partition, to remove any labels and stale data. call wipefs if formatting fails, to leave partition in consistent state. moreover, remove unnecessary exception handling on get_partition_device(). --- src/utils/fs.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/utils/fs.py b/src/utils/fs.py index 6514b4b..6967439 100644 --- a/src/utils/fs.py +++ b/src/utils/fs.py @@ -153,13 +153,19 @@ def mkfs(fs, disk, partition, label=None): if fs not in fsdict: raise OgError(f'mkfs failed, unsupported target filesystem {fs}') - try: - partdev = get_partition_device(disk, partition) - except ValueError as e: - raise OgError(f'mkfs aborted: {e}') from e + partdev = get_partition_device(disk, partition) - return fsdict[fs](partdev, label) + ret = subprocess.run(['wipefs', '-af', f'{partdev}']) + if ret.returncode != 0: + logging.warning(f'wipefs on {partdev}, fails with {ret.returncode}') + err = fsdict[fs](partdev, label) + if err != 0: + ret = subprocess.run(['wipefs', '-af', f'{partdev}']) + if ret.returncode != 0: + logging.warning(f'wipefs on {partdev} for consistency, fails with {ret.returncode}') + + return err def mkfs_ext4(partdev, label=None): err = -1