diff --git a/interface/ri_data.py b/interface/ri_data.py index 5071a83..7bef4f3 100644 --- a/interface/ri_data.py +++ b/interface/ri_data.py @@ -330,11 +330,15 @@ p_node - xml node (parent node) ''' def get_size(dev): ''' calculate raid device size ''' rd = Raid.dict[dev] - sz = min([ float(interface_partition.get_num(p_d.Partition.dict[p_d.Partition.get_disk_from_partition('/dev/'+d)]\ + Min = min([ float(interface_partition.get_num(p_d.Partition.dict[p_d.Partition.get_disk_from_partition('/dev/'+d)]\ ['partition']['/dev/'+d]['size'])) for d in rd.active_components]) - if rd.level == '0': return str(interface_partition.pretty_unit(sz*len(rd.active_components))) - elif rd.level == '1': return str(interface_partition.pretty_unit(sz*len(rd.active_components)/2)) - elif rd.level == '5': return str(interface_partition.pretty_unit(sz*(len(rd.active_components)-1))) + Sum = sum([ float(interface_partition.get_num(p_d.Partition.dict[p_d.Partition.get_disk_from_partition('/dev/'+d)]\ + ['partition']['/dev/'+d]['size'])) for d in rd.active_components]) + #if rd.level == '0': return str(interface_partition.pretty_unit(Min*len(rd.active_components))) + #elif rd.level == '1': return str(interface_partition.pretty_unit(Min*len(rd.active_components)/2)) + if rd.level == '0': return str(interface_partition.pretty_unit(Sum)) + elif rd.level == '1': return str(interface_partition.pretty_unit(Min)) + elif rd.level == '5': return str(interface_partition.pretty_unit(Min*(len(rd.active_components)-1))) @staticmethod def get_next_device(): diff --git a/new_partition/interface_partition.py b/new_partition/interface_partition.py index 7ec2bf5..16a3360 100755 --- a/new_partition/interface_partition.py +++ b/new_partition/interface_partition.py @@ -247,6 +247,10 @@ def del_raid(dev): raise StopIteration() except StopIteration: pass + try: + os.system('umount /dev/%s >/dev/null 2>&1' %(md)) + except: + pass try: os.system('mdadm --stop /dev/%s >/dev/null 2>&1' %(md)) except: diff --git a/text/ri_main.py b/text/ri_main.py index 1a853b9..eccabe2 100644 --- a/text/ri_main.py +++ b/text/ri_main.py @@ -26,7 +26,7 @@ while True : if init_flag: ri_data.init() init_flag = False - if len(ri_newt.Raid.init_from_internal()) < 2: + if len(ri_newt.Raid.init_from_internal()) < 2 and len(ri_data.Raid.dict) == 0: if list[2] == 'raid': del list[2] else: diff --git a/text/ri_newt.py b/text/ri_newt.py index 3858944..3a514e2 100644 --- a/text/ri_newt.py +++ b/text/ri_newt.py @@ -417,6 +417,14 @@ class Raid(Screen): if s == 0: device = Screen.listbox.current() del ri_data.Raid.dict[device] + try: + os.system('umount /dev/%s >/dev/null 2>&1' %(device)) + except: + pass + try: + os.system('mdadm --stop /dev/%s >/dev/null 2>&1' %(device)) + except: + pass return s def set_data(self):