summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Grover <agrover@redhat.com>2013-07-22 17:34:03 -0700
committerAndy Grover <agrover@redhat.com>2013-07-22 17:34:03 -0700
commit4d1b65a8029980085568c8c55e9859f69c5a6ed0 (patch)
tree55320cdcad214ed4498ed811dc4bbcd906c0e91d
parent7b19063c138e3a0346d321942ab1bcb7edd8d68f (diff)
downloadrtslib-fb-4d1b65a8029980085568c8c55e9859f69c5a6ed0.tar.gz
Make get_blockdev_size work better with md
Not all block device names that end with a number are partitions. Rewrite the function so we only look for partitions (by looking for ending number) if just reading /sys/block/foo/size fails. Reported-By: Craig Watson <craig.watson@vanguard-rugged.com> Signed-off-by: Andy Grover <agrover@redhat.com>
-rw-r--r--rtslib/utils.py12
1 files changed, 8 insertions, 4 deletions
diff --git a/rtslib/utils.py b/rtslib/utils.py
index 893c699..399c3bd 100644
--- a/rtslib/utils.py
+++ b/rtslib/utils.py
@@ -115,11 +115,15 @@ def get_blockdev_size(path):
'''
name = os.path.basename(os.path.realpath(path))
- m = re.search(r'([a-z]+)(\d+)$', name)
- if not m:
+ try:
return int(fread("/sys/block/%s/size" % name))
- else:
- return int(fread("/sys/block/%s/%s/size" % (m.groups()[0], m.group())))
+ except IOError:
+ # Maybe it's a partition?
+ m = re.search(r'([a-z_-]+)(\d+)$', name)
+ if m:
+ return int(fread("/sys/block/%s/%s/size" % (m.groups()[0], m.group())))
+ else:
+ raise
get_block_size = get_blockdev_size