summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Maragone <alexandre.marangone@inktank.com>2013-06-18 16:18:01 -0700
committerSage Weil <sage@inktank.com>2013-06-24 21:59:24 -0700
commita8f601d543168f4cdbddf674479d8de4b8dfc732 (patch)
tree6594f8dbba657c323ca7dcd0fb401a96079bf0d0
parent1c890f5cdfc596588e54fffeb016b4a5e9e2124c (diff)
downloadceph-a8f601d543168f4cdbddf674479d8de4b8dfc732.tar.gz
ceph-disk: make list_partition behave with unusual device names
When you get device names like sdaa you do not want to mistakenly conclude that sdaa is a partition of sda. Use /sys/block/$device/$partition existence instead. Fixes: #5211 Backport: cuttlefish Signed-off-by: Alexandre Maragone <alexandre.maragone@inktank.com> Reviewed-by: Sage Weil <sage@inktank.com> (cherry picked from commit 8c0daafe003935881c5192e0b6b59b949269e5ae)
-rwxr-xr-xsrc/ceph-disk13
1 files changed, 4 insertions, 9 deletions
diff --git a/src/ceph-disk b/src/ceph-disk
index bd7e6206ae8..93864c1c008 100755
--- a/src/ceph-disk
+++ b/src/ceph-disk
@@ -206,16 +206,11 @@ def list_partitions(disk):
disk = os.path.realpath(disk)
assert not is_partition(disk)
assert disk.startswith('/dev/')
- base = disk[5:]
+ base = disk.split('/')[-1]
partitions = []
- with file('/proc/partitions', 'rb') as proc_partitions:
- for line in proc_partitions.read().split('\n')[2:]:
- fields = re.split('\s+', line)
- if len(fields) < 5:
- continue
- name = fields [4]
- if name != base and name.startswith(base):
- partitions.append('/dev/' + name)
+ for name in os.listdir(os.path.join('/sys/block', base)):
+ if name.startswith(base):
+ partitions.append('/dev/' + name)
return partitions