diff options
author | Andy Grover <agrover@redhat.com> | 2013-07-22 17:34:03 -0700 |
---|---|---|
committer | Andy Grover <agrover@redhat.com> | 2013-07-22 17:34:03 -0700 |
commit | 4d1b65a8029980085568c8c55e9859f69c5a6ed0 (patch) | |
tree | 55320cdcad214ed4498ed811dc4bbcd906c0e91d | |
parent | 7b19063c138e3a0346d321942ab1bcb7edd8d68f (diff) | |
download | rtslib-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.py | 12 |
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 |