diff options
author | Igor Pashev <pashev.igor@gmail.com> | 2012-06-17 00:36:08 +0000 |
---|---|---|
committer | Igor Pashev <pashev.igor@gmail.com> | 2012-06-17 00:36:08 +0000 |
commit | 0213583a48d3e03876e72b0be8a41cee466e4b90 (patch) | |
tree | e210d96cdb1c1583a55c5465aad3f094d50c16ba | |
parent | c8ed22310c18d24208af0657c80b5f6eed25a6da (diff) | |
download | live-0213583a48d3e03876e72b0be8a41cee466e4b90.tar.gz |
Use full physical geometry
-rwxr-xr-x | setup | 21 |
1 files changed, 15 insertions, 6 deletions
@@ -29,15 +29,22 @@ def bytes_for_human(b): # 2088 2088 0 0 255 63 512 re_fdiskG = re.compile('\s*(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s*') -def get_hdd_capacity(dsk): +def get_hdd_geometry(dsk): out = subprocess.Popen(['fdisk', '-G', '/dev/rdsk/' + dsk + 'p0'], stdout=subprocess.PIPE).stdout for line in out: m = re_fdiskG.match(line) if m: cap = int(m.group(2)) * int(m.group(5)) * int(m.group(6)) * int(m.group(7)) - print cap - return bytes_for_human(cap) + return { + 'pcyl' : int(m.group(1)), + 'ncyl' : int(m.group(2)), + 'acyl' : int(m.group(3)), + 'bcyl' : int(m.group(4)), + 'nhead' : int(m.group(5)), + 'nsect' : int(m.group(6)), + 'secsiz' : int(m.group(7)), + } def get_hdd(): @@ -47,10 +54,12 @@ def get_hdd(): m = pat.search(line) if m: name = m.group(1) + geom = get_hdd_geometry(name) HDD[name] = { - 'desc' : m.group(2), - 'cap' : get_hdd_capacity(name), - 'use' : 0, + 'geom' : geom, + 'desc' : m.group(2), + 'cap' : bytes_for_human(geom['ncyl']*geom['nhead']*geom['nsect']*geom['secsiz']), + 'use' : 0, } if len(HDD) == 0: d.msgbox(width=50, title='Error: no disks found', |