From: Sage Weil Date: Wed, 13 Aug 2014 18:40:34 +0000 (-0700) Subject: ceph-disk: only fall back to sgdisk for 'list' if blkid seems old X-Git-Tag: v0.80.6~56 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=50166efd205f46fa325dec9636d817387e5d4d3b;p=ceph.git ceph-disk: only fall back to sgdisk for 'list' if blkid seems old If the blkid doesn't show us any ID_PART_ENTRY_* fields but we know it is a GPT partition, *then* fallback. Otherwise, don't bother. Signed-off-by: Sage Weil (cherry picked from commit b1651afb34d9d2c324db3bf5f54ac9ce001c6af9) --- diff --git a/src/ceph-disk b/src/ceph-disk index 7297da3773fe..711365f47448 100755 --- a/src/ceph-disk +++ b/src/ceph-disk @@ -2163,10 +2163,36 @@ def get_partition_type(part): part, ] ) + saw_part_entry = False for line in blkid.splitlines(): (key, value) = line.split('=') if key == 'ID_PART_ENTRY_TYPE': return value + if key == 'ID_PART_ENTRY_SCHEME': + table_type = value + if key.startswith('ID_PART_ENTRY_'): + saw_part_entry = True + + # hmm, is it in fact GPT? + table_type = None + base = get_partition_base(part) + blkid, _ = command( + [ + 'blkid', + '-p', + '-o', 'udev', + base + ] + ) + for line in blkid.splitlines(): + (key, value) = line.split('=') + if key == 'ID_PART_TABLE_TYPE': + table_type = value + if table_type != 'gpt': + return None # not even GPT + + if saw_part_entry: + return None # GPT, and blkid appears to be new, so we're done. # bah, fall back to sgdisk. (base, partnum) = re.match('(\D+)(\d+)', part).group(1, 2)