summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-06-17 20:54:15 -0700
committerSage Weil <sage@inktank.com>2013-07-24 15:46:36 -0700
commitf799dac7bdf7cf0824a177131473cf59ef3c5205 (patch)
treedb5b5f7cad2700cbdd0f4a3ef6bf1abb20ab11a1
parent27f31895664fa7f10c1617d486f2a6ece0f97091 (diff)
downloadceph-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-xsrc/ceph-disk21
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):