diff options
author | Alexandre Maragone <alexandre.marangone@inktank.com> | 2013-06-18 16:18:01 -0700 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-06-24 21:59:24 -0700 |
commit | a8f601d543168f4cdbddf674479d8de4b8dfc732 (patch) | |
tree | 6594f8dbba657c323ca7dcd0fb401a96079bf0d0 | |
parent | 1c890f5cdfc596588e54fffeb016b4a5e9e2124c (diff) | |
download | ceph-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-x | src/ceph-disk | 13 |
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 |