Fix a bug when deleting a logical partition whose pre_partition and

next_partition are free and in the extended partition.

	modified:   new_partition/interface_partition.py
This commit is contained in:
Peng Zhihui
2014-01-21 10:09:03 +08:00
parent 9ec9e67824
commit 22a4621001

View File

@@ -608,58 +608,58 @@ def del_msdos_partition(partition,dev):
base_unit
p_d.delete_one_partition(p_d.Partition.dict, dev, next_partition)
for p in p_d.sort_partitions(p_d.Partition.dict, dev, "all"):
p_num = p_d.Partition.dict[dev]['partition'][p]['num']
if p_d.Partition.dict[dev]['partition'][p]['sn'] > partition_sn + 1:
p_d.Partition.dict[dev]['partition'][p]['sn'] -= 2
if p_num > partition_num and not re.search('free', p):
p_num -= 1
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['num'] = \
p_num
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['sn'] = \
p_d.Partition.dict[dev]['partition'][p]['sn']
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['start'] = \
p_d.Partition.dict[dev]['partition'][p]['start']
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['end'] = \
p_d.Partition.dict[dev]['partition'][p]['end']
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['size'] = \
p_d.Partition.dict[dev]['partition'][p]['size']
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['type'] = \
p_d.Partition.dict[dev]['partition'][p]['type']
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['filesystem'] = \
p_d.Partition.dict[dev]['partition'][p]['filesystem']
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['flags'] = \
p_d.Partition.dict[dev]['partition'][p]['flags']
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['from_os'] = \
p_d.Partition.dict[dev]['partition'][p]['from_os']
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['mount_point'] = \
p_d.Partition.dict[dev]['partition'][p]['mount_point']
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['format'] = \
p_d.Partition.dict[dev]['partition'][p]['format']
if re.search('free',p):
p_num -= 1
p_d.Partition.dict[dev]['partition']['free '+ str(p_num)]['num'] = \
p_num
p_d.Partition.dict[dev]['partition']['free '+ str(p_num)]['sn'] = \
p_d.Partition.dict[dev]['partition'][p]['sn']
p_d.Partition.dict[dev]['partition']['free '+ str(p_num)]['start'] = \
p_d.Partition.dict[dev]['partition'][p]['start']
p_d.Partition.dict[dev]['partition']['free '+ str(p_num)]['end'] = \
p_d.Partition.dict[dev]['partition'][p]['end']
p_d.Partition.dict[dev]['partition']['free '+ str(p_num)]['size'] = \
p_d.Partition.dict[dev]['partition'][p]['size']
p_d.Partition.dict[dev]['partition']['free '+ str(p_num)]['filesystem'] = \
p_d.Partition.dict[dev]['partition'][p]['filesystem']
p_d.Partition.dict[dev]['partition']['free '+ str(p_num)]['type'] = \
p_d.Partition.dict[dev]['partition'][p]['type']
p_d.Partition.dict[dev]['partition']['free '+ str(p_num)]['flags'] = \
p_d.Partition.dict[dev]['partition'][p]['flags']
p_d.Partition.dict[dev]['partition']['free '+ str(p_num)]['from_os'] = \
p_d.Partition.dict[dev]['partition'][p]['from_os']
p_d.Partition.dict[dev]['partition']['free '+ str(p_num)]['format'] = \
p_d.Partition.dict[dev]['partition'][p]['format']
p_d.Partition.dict[dev]['partition']['free '+ str(p_num)]['mount_point'] = \
p_d.Partition.dict[dev]['partition'][p]['mount_point']
for p in p_d.sort_partitions(p_d.Partition.dict, dev, "all"):
p_num = p_d.Partition.dict[dev]['partition'][p]['num']
if p_num > partition_num and not re.search('free', p):
p_num -= 1
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['num'] = \
p_num
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['sn'] = \
p_d.Partition.dict[dev]['partition'][p]['sn']
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['start'] = \
p_d.Partition.dict[dev]['partition'][p]['start']
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['end'] = \
p_d.Partition.dict[dev]['partition'][p]['end']
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['size'] = \
p_d.Partition.dict[dev]['partition'][p]['size']
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['type'] = \
p_d.Partition.dict[dev]['partition'][p]['type']
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['filesystem'] = \
p_d.Partition.dict[dev]['partition'][p]['filesystem']
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['flags'] = \
p_d.Partition.dict[dev]['partition'][p]['flags']
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['from_os'] = \
p_d.Partition.dict[dev]['partition'][p]['from_os']
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['mount_point'] = \
p_d.Partition.dict[dev]['partition'][p]['mount_point']
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['format'] = \
p_d.Partition.dict[dev]['partition'][p]['format']
if p_num > partition_num and re.search('free',p):
p_num -= 1
p_d.Partition.dict[dev]['partition']['free '+ str(p_num)]['num'] = \
p_num
p_d.Partition.dict[dev]['partition']['free '+ str(p_num)]['sn'] = \
p_d.Partition.dict[dev]['partition'][p]['sn']
p_d.Partition.dict[dev]['partition']['free '+ str(p_num)]['start'] = \
p_d.Partition.dict[dev]['partition'][p]['start']
p_d.Partition.dict[dev]['partition']['free '+ str(p_num)]['end'] = \
p_d.Partition.dict[dev]['partition'][p]['end']
p_d.Partition.dict[dev]['partition']['free '+ str(p_num)]['size'] = \
p_d.Partition.dict[dev]['partition'][p]['size']
p_d.Partition.dict[dev]['partition']['free '+ str(p_num)]['filesystem'] = \
p_d.Partition.dict[dev]['partition'][p]['filesystem']
p_d.Partition.dict[dev]['partition']['free '+ str(p_num)]['type'] = \
p_d.Partition.dict[dev]['partition'][p]['type']
p_d.Partition.dict[dev]['partition']['free '+ str(p_num)]['flags'] = \
p_d.Partition.dict[dev]['partition'][p]['flags']
p_d.Partition.dict[dev]['partition']['free '+ str(p_num)]['from_os'] = \
p_d.Partition.dict[dev]['partition'][p]['from_os']
p_d.Partition.dict[dev]['partition']['free '+ str(p_num)]['format'] = \
p_d.Partition.dict[dev]['partition'][p]['format']
p_d.Partition.dict[dev]['partition']['free '+ str(p_num)]['mount_point'] = \
p_d.Partition.dict[dev]['partition'][p]['mount_point']
p_num_max = 1
for p in p_d.sort_partitions(p_d.Partition.dict, dev, "partition"):
if p_d.Partition.dict[dev]['partition'][p]['num'] > p_num_max:
@@ -670,9 +670,8 @@ def del_msdos_partition(partition,dev):
for f in p_d.sort_partitions(p_d.Partition.dict, dev, "free"):
if p_d.Partition.dict[dev]['partition'][f]['num'] > f_num_max:
f_num_max = p_d.Partition.dict[dev]['partition'][f]['num']
if f_num_max > p_d.Partition.dict[dev]['partition'][next_partition]['num']:
if f_num_max > p_d.Partition.dict[dev]['partition'][pre_partition]['num']:
p_d.delete_one_partition(p_d.Partition.dict, dev, 'free '+str(f_num_max))
else:
p_d.Partition.dict[dev]['partition'][next_partition]['start'] = partition_start
p_d.Partition.dict[dev]['partition'][next_partition]['sn'] = partition_sn
@@ -831,6 +830,10 @@ def del_msdos_partition(partition,dev):
p_d.Partition.dict[dev]['partition']['free '+str(free_num)]['size'] = partition_size
p_d.Partition.dict[dev]['partition']['free '+str(free_num)]['type'] = ''
p_d.Partition.dict[dev]['partition']['free '+str(free_num)]['flags'] = ''
p_d.Partition.dict[dev]['partition']['free '+str(free_num)]['from_os'] = 'no'
p_d.Partition.dict[dev]['partition']['free '+str(free_num)]['format'] = 'no'
p_d.Partition.dict[dev]['partition']['free '+str(free_num)]['mount_point'] = ''
p_d.Partition.dict[dev]['partition']['free '+str(free_num)]['filesystem'] = 'Free Space'
else:
free_num_max = 1