summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2012-06-17 00:36:08 +0000
committerIgor Pashev <pashev.igor@gmail.com>2012-06-17 00:36:08 +0000
commit0213583a48d3e03876e72b0be8a41cee466e4b90 (patch)
treee210d96cdb1c1583a55c5465aad3f094d50c16ba
parentc8ed22310c18d24208af0657c80b5f6eed25a6da (diff)
downloadlive-0213583a48d3e03876e72b0be8a41cee466e4b90.tar.gz
Use full physical geometry
-rwxr-xr-xsetup21
1 files changed, 15 insertions, 6 deletions
diff --git a/setup b/setup
index caf3d2f..e5fdc57 100755
--- a/setup
+++ b/setup
@@ -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',