From 40134efee4ca23203c967f6b5eaf3b1982f6cd36 Mon Sep 17 00:00:00 2001 From: Takuya ASADA Date: Sat, 27 Aug 2022 02:16:19 +0900 Subject: [PATCH] scylla_raid_setup: check uuid and device path are valid Added code to check make sure uuid and uuid based device path are valid. --- dist/common/scripts/scylla_raid_setup | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/dist/common/scripts/scylla_raid_setup b/dist/common/scripts/scylla_raid_setup index bf29857612..d5f6daa75d 100755 --- a/dist/common/scripts/scylla_raid_setup +++ b/dist/common/scripts/scylla_raid_setup @@ -152,7 +152,18 @@ if __name__ == '__main__': os.makedirs(mount_at, exist_ok=True) - uuid = out(f'blkid -s UUID -o value {fsdev}') + uuid = get_partition_uuid(fsdev) + uuidpath = f'/dev/disk/by-uuid/{uuid}' + + if not uuid: + raise Exception(f'Failed to get UUID of {fsdev}') + if not os.path.exists(uuidpath): + raise Exception(f'{uuidpath} is not found') + if not stat.S_ISBLK(os.stat(uuidpath).st_mode): + raise Exception(f'{uuidpath} is not block device') + if not is_unused_disk(uuidpath): + raise Exception(f'{uuidpath} is busy') + after = 'local-fs.target' wants = '' if raid and args.raid_level != '0': @@ -169,7 +180,7 @@ After={after}{wants} DefaultDependencies=no [Mount] -What=/dev/disk/by-uuid/{uuid} +What={uuidpath} Where={mount_at} Type=xfs Options=noatime{opt_discard}