diff options
author | Sage Weil <sage@inktank.com> | 2013-06-17 20:54:15 -0700 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-07-24 15:46:36 -0700 |
commit | f799dac7bdf7cf0824a177131473cf59ef3c5205 (patch) | |
tree | db5b5f7cad2700cbdd0f4a3ef6bf1abb20ab11a1 | |
parent | 27f31895664fa7f10c1617d486f2a6ece0f97091 (diff) | |
download | ceph-f799dac7bdf7cf0824a177131473cf59ef3c5205.tar.gz |
ceph-disk: make is_held() smarter about full disks
Handle the case where the device is a full disk. Make the partition
check a bit more robust (don't make assumptions about naming aside from
the device being a prefix of the partition).
Signed-off-by: Sage Weil <sage@inktank.com>
(cherry picked from commit e082f1247fb6ddfb36c4223cbfdf500d6b45c978)
-rwxr-xr-x | src/ceph-disk | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/ceph-disk b/src/ceph-disk index 36c75b5d598..643eb588a40 100755 --- a/src/ceph-disk +++ b/src/ceph-disk @@ -289,13 +289,20 @@ def is_held(dev): assert os.path.exists(dev) dev = os.path.realpath(dev) base = dev[5:] - disk = base - while disk[-1].isdigit(): - disk = disk[:-1] - directory = '/sys/block/{disk}/{base}/holders'.format(disk=disk, base=base) - if not os.path.exists(directory): - return [] - return os.listdir(directory) + + # full disk? + directory = '/sys/block/{base}/holders'.format(base=base) + if os.path.exists(directory): + return os.listdir(directory) + + # partition? + part = base + while len(base): + directory = '/sys/block/{base}/{part}/holders'.format(part=part, base=base) + if os.path.exists(directory): + return os.listdir(directory) + base = base[:-1] + return [] def verify_not_in_use(dev): |