ACC SHELL

Path : /usr/share/YaST2/modules/
File Upload :
Current File : //usr/share/YaST2/modules/StorageProposal.ybc

YaST bytecode 1.4.0StorageProposal]StorageProposal.ycpFileSystems
PartitionsStorageProductFeaturesArchStageread_partition_config	read_partition_xml_config	get_gap_info
add_cylinder_infoget_perfect_listprocess_partition_data		
find_matching_disk	try_resize_windowsremove_possible_partitionsdistribute_spaceadd_part_recursivenormalize_gapsdo_weightingcur_mode

cur_weightcur_gapbig_cylno_propose_disks	
proposal_homeproposal_lvmproposal_encryptproposal_password	cfg_xml	GetProposalHomeSetProposalHome GetProposalLvm!SetProposalLvm"GetProposalEncrypt#SetProposalEncrypt$GetProposalPassword	%SetProposalPassword	&SetProposalDefault'
GetControlCfg	(
GetProposalVM	)EncryptDevices			*GetDestroyedLvmVgs		+DeleteDestroyedLvmVgs		,NoProposeDisks	-ignore_disk	.
AddWinInfo		/swapable	0flex_init_swapable	1check_swapable	2
pinfo_name	3has_flex_proposal4	need_boot5try_add_boot6do_flexible_disk	7do_flexible_disk_conf8do_vm_disk_conf		9restrict_disk_names		:do_pflex		;do_proposal_flexible		<try_remove_sole_extended=get_gaps>can_swap_reuse		?can_boot_reuse		@can_mp_reuse	Aget_avail_size_mbBget_swap_sizesCget_proposalDget_usable_size_mbE
get_mb_sol	F
get_vm_solGspecial_boot_proposal_prepareHprepare_part_lists			Iget_disk_try_list		Jusable_for_win_resizeKremove_p_settings	Lremove_one_partitionMremove_one_partition_vmNremove_used_by	Oget_inst_proposal		Premove_keys	Qremove_mount_points		R	remove_vm			Sfind_vm			T
did_remove_vg	Usizek_to_peVpe_to_sizekW	extend_vm	X	create_vm	Y	modify_vmZget_inst_prop_vm			[get_proposal_vm			\
get_inst_prop		9>val  D!!Ival""O##Tval$$Z%%_val	&&e	home_only''s((00^tg	3366disk<<2parts>>	disk	
partitionstgmap	CC/
	have_swapdisk[[^target	key	disk\\target	^3SCRRead0storage3FileSystems
FsToSymbol
	3
Partitionsfsid_native	fsid_swapfsid_lvm	fsid_raidfsid_extended_winfsid_prep_chrp_boot
fsid_gpt_bootFsidBootNeedBoot
do_not_deleteEfiBoot	DefaultFs

DefaultBootFs
	BootMount	MinimalNeededBootsizeMinimalRequiredBootsizeBootCylPrepBootBootPrimaryIsDosWinNtPartition
SwapSizeMbFsIdToString	
MaxPrimary	HasExtended	3Storageresize_cyl_sizeresize_partition	resize_partition_dataClassicStringToByte	
GetDeviceName		GetDiskPartition	SwappingPartitions	GetFreeSpace	
MaxCylLabelSetCryptPwd		
CheckSwapable	
SetVolOptions	
			CanEdit	CanDeleteSetPartitionData				DelPartitionData				IsPartitionableSpecialBootHandling		3ProductFeaturesGetStringFeature			
GetFeature		GetBooleanFeature		GetIntegerFeature		3Arch
board_iseriesia643Stageinitial$*free$+$,
$-***$/$1$2$3$4$6
%9-;%>&@,A	
y2milestone	
SetProposalHome val:%1%D -F%I!&K,L	
y2milestone	
SetProposalLvm val:%1%O"-Q%T#&V,W	
y2milestone	
SetProposalEncrypt val:%1%Z$-\%_%&a,b	
y2milestone	
SetProposalPassword%e&,ghome(h!4i,j!prop_lvm,k#,l%,n	
y2milestone	
8SetProposalDefault home:%1 lvm:%2 encypt:%3 home_only:%4%s'(uisempty4vbtmpitmpstmp	$w	partitioningtry_separate_home'xhome	$z	partitioningroot_space_percent'{root_percent	(|||root_percentroot_percent'}root_percent($	partitioninglimit_try_home'
home_limit/	*(
home_limit'
home_limit*&	partitioningroot_base_size'	root_base/	*(	root_base'	root_base*&	partitioning
root_max_size'root_max/	*(root_max'root_max*
&	partitioningvm_keep_unpartitioned_region'vm_keep_unpartitioned_region	&	partitioningvm_desired_size'vm_want/	*(vm_want'vm_want*&	partitioningvm_home_max_size'home_max/	*(home_max'home_max*&	partitioningproposal_lvm'prop_lvm	,&,	
y2milestone	
GetControlCfg cfg_xml:%1-%(ret	$(4&system,	
y2milestone	
ProposalVM lvm:%1 ret:%2-%)target	vg	devices	(||! !"-$	devices_add	,	
y2milestone	
vg:%1 devices:%2	&				mapmapdisk_device	data


partitions$

partitions	&maplist	partitionpart_device	$
	device(		contains	
4,	
y2debug	
setting encryption for %1
'enc_typeluks,
-'

partitions-

,	
y2milestone	
	target:%1-%*target	vgs	$		,		foreachdiskdev	disk

,foreachp

partitions	(&&
used_by_typeUB_NONEUB_LVMformat4&				add		used_by_device&			toset	,	
y2milestone	
GetDestroyedLvmVgs %1	-	%+target	vgs	$	*,	
y2milestone	
DeleteDestroyedLvmVgs %1	,		foreachdev	
	(haskey
'
delete'

partitionsmaplistp

partitions	(haskeymount&removemount-,	
y2milestone	
DeleteDestroyedLvmVgs %1: %2


-%,(4&	(&&	SCR::Read.target.size/etc/install.inf4inst	$
		SCR::Read.etc.install_inf.Partition,	
y2milestone	
.NoProposeDisks .etc.install_inf.Partition "%1"
(&&
	size	
4d(		search		
/dev/&
+			/dev/
$
,	
y2milestone	
NoProposeDisks inst:%1 disk:%2
(	size		disk&			add	disk&

		SCR::Read.etc.install_inf.Cdrom,	
y2milestone	
*NoProposeDisks .etc.install_inf.Cdrom "%1"
(&&
	size	
4
d(		search		
/dev/&
+			/dev/
$
,	
y2milestone	
NoProposeDisks inst:%1 disk:%2
(	size		disk&			add	disk(4env	$
		getenv		YAST2_STORAGE_NO_PROPOSE_DISKS,	
y2milestone	
NoProposeDisks env:"%1"
(
4ls	$			filtere				splitstring			
 	
	size	&	merge& 		toset		sort,!	
y2milestone	
NoProposeDisks "%1"-#%'-dev	entrysoftret$)	||!readonly(+&&&&!		labelgptgpt4,&-	(/&&&&&&!			search		/dev/sd40&1	(3&&&&!	||softraiddiskhotpluggable44&5	(7&&&&!			contains,48&9	(;&&!	4<&=	
used_by_typeUB_NONEUB_NONE(?	4@,A	
y2milestone	
ignoring disk %1 soft:%2-C	%G.targets	,I	
y2milestone	
AddWinInfo called,J		foreachdisk	data

'K

partitionsmaplistp

partitions	(M&&fsid

contains	ntfsvfat
used_fsnone4O'Pwinfo	device
used_fsnone,R	
y2milestone	

AddWinInfo %1-T-W$[/
%^0swaps	&`/
$a	,b		foreachdev	disk

(c

used_by_typeUB_NONEUB_NONE4dsw$efilterp


partitions	&&&&

typeunknownextended!
delete

detected_fsunknownswap&ifilterp
||		contains		
device	
device,kforeachp
'l/	
device,p	
y2milestone	
flex_init_swapable %1/%t1dev	-v/%z2-|
/part.info%3ret$	SCR::Read.target.size2(!4t$	partitioninguse_flexible_partitioning,	
y2milestone	
%ProductFeatures::GetBooleanFeature %1	(&&		&,	
y2milestone	
has_flex_proposal ret:%1-%4disk-||
type
CT_UNKNOWN	CT_DMRAID%5confdiskforcebootroottc$	sizefiltere

partitions		
mount$	sizefiltere

partitions		
mount/$	,	
y2milestone	
try_add_boot conf %1,	
y2milestone	
%try_add_boot boot %1 root %2 force %3		(&&&&!	||	||	cyl_count44pb$

'
mount'
size'
fsys'
id'

auto_added'
max_cyl'
primary'
maxsize**'	
partitionsadd	
partitions	
,	
y2milestone	
8try_add_boot disk_cyl %1 boot_cyl %2 need_boot %3 typ %4	cyl_count
type
CT_UNKNOWN,	
y2milestone	
+try_add_boot boot added automagically pb %1
-	%6dev	ret	conf	solutions$		device,	
y2milestone	
do_flexible_disk dev %1	,	
y2milestone	
do_flexible_disk parts %1
partitions	$	
'	ok$	2$	
(&&size	4tcgapsol,	
y2milestone	
#do_flexible_disk processing disk %1	$
5	&free&
$
	&



$


partitions	
(size
4'
diskeval'	ok'	disk	
'	weight
weight,	
y2milestone	
do_flexible_disk ret %1	ok(	ok4,	
y2milestone	
do_flexible_disk weight %1	weight,	
y2milestone	
do_flexible_disk disk %1	disk
-	%7diskcoignore_bootreusedev	confret	solutions
$		device,	
y2milestone	
4do_flexible_disk_conf dev %1 ignore_boot %2 reuse %3	$	(!&	5	,	
y2milestone	
do_flexible_disk_conf parts %1
partitions	,	
y2milestone	
do_flexible_disk_conf conf %1	$	
'	ok$	
(&&&&size	size	
partitions	4gaptcsol,	
y2milestone	
(do_flexible_disk_conf processing disk %1	&reusefree&
$
	$

	
$


partitions	
(size
4'
diskeval'	ok'	disk	
'	weight
weight(4'	ok'	disk,	
y2milestone	
do_flexible_disk_conf ret %1	ok(&&	oksize	4,	
y2milestone	
do_flexible_disk_conf weight %1	weight,	
y2milestone	
do_flexible_disk_conf parts %1	disk
partitions	-	%8diskbootvmkey	key	dev	confretfsid$
		device,	
y2milestone	
.do_vm_disk_conf dev %1 vmkey %2 key %3 boot %4	,	
y2milestone	
do_vm_disk_conf parts %1
partitions	$	

partitions
id(size'	
partitionsadd	
partitions	$	
'	ok$		
partitionsid(4gaptcoksol,	
y2milestone	
"do_vm_disk_conf processing disk %1	&free&
$
	,	
y2milestone	
do_vm_disk_conf gap %1
,	
y2milestone	
do_vm_disk_conf conf %1	$ 

	
,!	
y2milestone	
do_vm_disk_conf tc %1
,"	
y2milestone	
do_vm_disk_conf gap %1
gap	(#size
gap	4$'%
gapsortab
gap	('extendedextended-(startstart-*!extended,,	
y2milestone	
do_vm_disk_conf gap %1
gap	$.
size(/!
40gstartbocyl_num	$1$2findp

partitions		mount	mount,4	
y2milestone	
do_vm_disk_conf boot %1$5	cylinders,6	
y2milestone	
do_vm_disk_conf boot cyl %1'7
gapmaplistg
gap	(9&&&&&&!exists!
	cylinders||&&extendedsize
ext_pnr	&&!extendedsize
free_pnr	4<key	&=
&>start$?extendedext_pnrfree_pnr'@added
'A	cylinders-	cylinders'B
remove
	(C	cylinders4Dvg_size
add_cylinders$E'vm_want*,H	
y2milestone	
?do_vm_disk_conf maximum volume group size from control file: %1$I	cylinders(J&&&&'vm_keep_unpartitioned_region4Kcyl_size$L/size	cylinders&M/**(N	cylinders&O	cylinders'Qaddedaddadded	
,S	
y2milestone	
'do_vm_disk_conf added new partition: %1'T	cylinders'U
remove
	-X(Z!
4['\
gapmaplistg

gap	(^&&&&&&!
exists!

	cylinders||&&
extendedsize
ext_pnr	&&!
extendedsize
free_pnr	4akey	&b
&c
start$d
extendedext_pnrfree_pnr'e
added
'f
	cylinders-
	cylinders'g
remove
	-i
(l&&
	size	4m'n
gapfilterg

gap	
start,q	
y2milestone	
do_vm_disk_conf gap %1
gap	(s	size	&t

$u

'v
solution
'w

partitions	
partitions	'x
disk'y	ok
'z	weight({&&
	size	4|sl(}size
ext_reg	4~ext_endaext$-+
ext_reg
ext_reg$findg

gap	&&&&&&size
added	!
exists
start-
start,	
y2milestone	
do_vm_disk_conf ee:%1 ae:%2(4'

resize_extend'
gapfilterg
gap	startstart&findg
gap	&&&&!existsextendedend,	
y2milestone	
do_vm_disk_conf aext %1(4'
gapmaplistg
gap	(endend4'	cylinders-+	cylinders

resize_extend'end

resize_ext-4a$extendedstart+
ext_reg
ext_regend

resize_ext'	cylinders+-endstart,	
y2milestone	
do_vm_disk_conf add gap %1,	
y2milestone	
do_vm_disk_conf add gap %1
gap	'
gapadd
gap	,	
y2milestone	
do_vm_disk_conf add gap %1
gap	,	
y2milestone	
do_vm_disk_conf aext gap %1
'
gapmaplistg
gap	(exists4acur$findgg
gap	&&&&&&&&sizeadded	!existsextendedextendedstartend-startend,	
y2milestone	
do_vm_disk_conf ee:%1 ae:%2end(4'resizeend'fsid	-$maplistg
gap	resize,	
y2milestone	
do_vm_disk_conf sl %1'
gapfilterg
gap	!containsend'
gapsortab
gap		cylinders	cylinders,	
y2milestone	
do_vm_disk_conf sorted gap %1
gap	'
gapmaplistg
gap	(&&&&!exists	cylinders||&&extendedsize
ext_pnr	&&!extendedsize
free_pnr	4key	vg_size
add_cylinders	$extendedext_pnrfree_pnr$'vm_want*,	
y2milestone	
?do_vm_disk_conf maximum volume group size from control file: %1$	cylinders(&&&&'vm_keep_unpartitioned_region4cyl_size$/size	cylinders&/**(	cylinders&	cylinders'addedaddadded	
,	
y2milestone	
'do_vm_disk_conf added new partition: %1'	cylinders'
remove
	-'
gapmaplistg
gap	(&&&&exists	fsid	4'fsid	-,	
y2milestone	
do_vm_disk_conf end gap %1
gap	'
solution
'	disk	
,	
y2milestone	
do_vm_disk_conf ret %1	ok(	ok4,	
y2milestone	
do_vm_disk_conf weight %1	weight,	
y2milestone	
do_vm_disk_conf parts %1	disk
partitions	-	%9disks	helper	%	s	count$&			filterdist	(		search		
-&+-,	/dev/sd,		/dev/hd,
	/dev/cciss/,		/dev/dasd,
	
y2milestone	
restrict_disk_names: ret %1-%:target	confret		solutions$	
'	ok$		&free(size4ddev	tcdtmpdlist
save_dlist$
				maplistk	e			filterl	f!-&
		sort
,	
y2milestone	
do_pflex ddev %1
$

$ 

,!foreachp
partitions	dprio$#disk($haskey
4%'&
add
	4)'*
,-	
y2milestone	
do_pflex dlist %1
$.
maplistke
,/	
y2milestone	
do_pflex dlist %1
(0size
size
41idx$2size
)3size
44'5
-size
union
-size
	
	&7+)9size
size
4:&;
remove
size
,=	
y2milestone	
do_pflex dlist %1
$?
eval
+@count$B+Ctd	idx$E		eval
$F,G	
y2milestone	
do_pflex start while count %1)H&&size
size
4Imd,J	
y2milestone	
do_pflex in while idx %1&K
eval'L

partitionseval
	$M


,N	
y2milestone	
do_pflex size(md) %1size
(Osize
4P&Q	add	
&R			filtere		
device,S	
y2milestone	
do_pflex new td %1&T+4W,X	
y2milestone	
do_pflex no solution&Ysize
&Z		eval
&[		&\+(]size
4^tfi$_
	&`
remove
&a
add
,b	
y2milestone	
do_pflex new rot dlist %1
||size	size
(h&&size	size
4i&j
eval
'k
-size
union
-size
	
-size
	&m
remove
-size
,n	
y2milestone	
do_pflex new truncated dlist %1
&p
eval
||size	size
(t&&size	||||||sizekeep_partition_fsys	sizekeep_partition_id	sizekeep_partition_num	!
prefer_remove4ymd	,z	
y2milestone	
do_pflex desperate mode&{
eval&|	desparate'}
keep_partition_fsys	'~
keep_partition_id	'
keep_partition_num	'

prefer_remove$


(size4&	add	(size	4,foreache	disk	$
	device'

,	
y2milestone	
do_pflex solution disk %1 %2


'	ok&'	target+-	%;target	conf$	
(partitioninguse_flexible_partitioning&	&	2,	
y2milestone	
conf:%1	-:	%
disks	targetconf	solutions	ret$	
&`y&
,		foreachk	
etc$

,	
y2milestone	
%find_matching_disk processing disk %1
,	
y2milestone	
find_matching_disk parts %1
partitions	$5(	desparate&free(!
prefer_remove4gaplegaprw
$	&
$
partitions	(size4'	
eval'	
diskeval&reuse$	(sizegap	sizegap	4&
&
partitions	(&&size||!haskey	
&&haskeyweightweigth	
weigth4,	
y2milestone	
*find_matching_disk solution reuse existing'	
eval'	
diskeval&resize$(findp

partitions	
resize4&	&
&
partitions	(&&size||!haskey	
&&haskeyweightweigth	
weigth4,	
y2milestone	
,find_matching_disk solution resizing windows'	
eval'	
diskeval4rpgapl$$	&
$
partitions	(size4'	
eval'	
diskeval$	
(size	4disks	,		foreachk	e	,	
y2milestone	
$find_matching_disk disk %1 weight %2weight$
				maplistk	e	&
				sorta	b	
	weight	weight,	
y2milestone	
"find_matching_disk sorted disks %1
&		
	
'	device
	-	%dev	solutionvgname	disk
partitionsvalue	remove_bootindex$	disk
$		$	$	(sizefiltere

partitions	&&	
mount

auto_added4	,
foreachesolutiongap	,foreacha
added	pindex$
(&&&&&&	
partitionsmount/		cyl_countend!4	4&	$	(	4,foreachesolutiongap	nlist$	,foreacha
added	pindex$ 
(!	
partitionsmount4#restnlist$$
,%	
y2milestone	
3process_partition_data remove unneeded %3 %1 cyl %2added	$'filterladded	((&&size!exists4)weightr$*maplistl$+
&,
partitions	&.evaladded	'/solutiongap		cylinders-	cylindersdiff'2solutiongap	addedeval&4+&6	+	(9solution
resize_ext4:';	
partitionsmaplistp	
partitions	(=
typeunknownextended4>'?resize'@	ignore_fs'Aregion+-solution
resize_extregion'Csize_k/*region	cyl_size,D	
y2milestone	
$process_partition_data resize ext %1-F,Iforeache
solutiongap	,K	
y2milestone	
process_partition_data e %1
(L
exists4Mindexpindexmount	fsid$N$O
added$P	
partitionsmount$Q(Rswap4S&T(V
partitionsid4W&X
partitionsid,Zforeachp
	
partitions	(\
nr
added4],^	
y2milestone	
$process_partition_data reuse part %1
(_	
mount'`
inactive&a



partitionsfsysunknown	
partitionsfopt	
partitionsfstopt	
partitionslabel(f
fsid4g'h
change_fsid'i
ori_fsid
fsid'j
fsid(l&&&&	size		size	

typeunknownextended'n
vg'o	
partitions
,p	
y2milestone	
)process_partition_data reuse auto part %1
(r&&||	size	
resize
nr
nr4t(u&&
fsid
fsid
fsid4v'w
change_fsid'x
ori_fsid
fsid'y
fsid
fsid({
resize4|'}
resize'~
	ignore_fs'
region+-
resize
region'
size_k/*
region	cyl_size(	size	'
vg'	
partitions
,	
y2milestone	
%process_partition_data resize part %1
&+4regionpart$
start+-
end
start$
(&&
extended
created4)
added+	max_primary	max_primary4pindexmount	fsid$
added$	
partitionsmount$(swap4&'create'nr
created'devicenr'region'region
added'+region'-region'typeprimary'inactive&

partitionsfsysunknown	
partitionsfopt	
partitionsfstopt	
partitionslabel(
partitionsid4&
partitionsid(!haskey
partitions
fsys4'format'size_k/*region	cyl_size'fsid'fstype(&&	size		size	'vg,	
y2milestone	
(process_partition_data auto partition %1&	add	'
created
added'
addedremove
added	&
'create'nr
created'devicenr'regioneval'typeextended'fsid'fstypefsid'size_k/*	cyl_size,	
y2milestone	
1process_partition_data extended auto partition %1&	add	eval,foreacha

added	pindexmount	fsid&
$
$	
partitionsmount$(swap4&'create'nr
'devicenr'
'regioneval'+'size_k/*	cyl_size'typeprimary(
extended4'typelogical'inactive&

partitionsfsysunknown	
partitionsfopt	
partitionsfstopt	
partitionslabel(
partitionsid4&
partitionsid(!haskey
partitions
fsys4'format,	
y2milestone	
8process_partition_data partition id %1 format %2 part %3format
partitions
'fsid'fstype(&&	size		size	'vg,	
y2milestone	
(process_partition_data auto partition %1&	add	eval&	sortab

	
nr
nr'	
partitionsunion	
partitions		,	
y2milestone	
process_partition_data disk %1	-	%
confgapcyl_sizesum$	cyl_size'
partitionssortab


partitions	(
primary
primary-(
max_cyl
max_cyl-
max_cyl
max_cyl-	
size
size,	
y2milestone	
add_cylinder_info parts %1
partitions	$	'

partitionsmaplistp

partitions	&	+	
pct'
	cylinders/-+
size		(
	cylinders4'
	cylinders-
,	
y2milestone	
add_cylinder_info sum %1	,	
y2milestone	
add_cylinder_info parts %1
partitions	(	d4rest$
-	d'
partitionsmaplistp
partitions	(haskeypct4pctdiff$ 
pct$!
/+*

/		&"	-	
&#
-

'$pct-

-&')
partitionsmaplistp

partitions	(+haskey
pct4,cyl$-*/sumd
pct&./+/		(/40&1'3
want_cyl(5
maxsize46cyl$7/-+
maxsize		'8
size_max_cyl(9
want_cyl4:';
want_cyl->
,@	
y2milestone	
add_cylinder_info parts %1
partitions	-A%Epsgret,G	
y2milestone	
get_perfect_list ps %1,H	
y2milestone	
get_perfect_list gap %1(I&&sizegap	||&&&&extended_possiblesizefree_pnr	+size+sizeext_pnr	sizefree_pnr	&&!extended_possiblesize+sizeext_pnr	sizefree_pnr	4Olglp$P
eval'Q
gapmapliste
gap	'Sorig_cyl	cylinders'Tadded	-U'W
procpart$X
eval(Y&&extended_possible+sizesizefree_pnr	4Zindex,[	
y2milestone	
"get_perfect_list creating extended$\,]foreache
gap	(_!exists4`gap$aeval
'bgapcreatedfree_pnr'cfree_pnrremovefree_pnr	'dgapextended,e&g+4k,l	
y2milestone	
&get_perfect_list not creating extended,m
$p	
(qsize4r's	weight't	solutioneval'u	
partitionseval,w	
y2milestone	
get_perfect_list ret weight %1	weight,x	
y2milestone	
 get_perfect_list ret solution %1	solutiongap	-y	%}psglggindexpindexpart
,	
y2milestone	
add_part_recursive pindex %1procpart,	
y2milestone	
add_part_recursive ps %1,	
y2milestone	
add_part_recursive gap %1$	eval$	$		procpart$		
'	procpart+	,	
y2milestone	
add_part_recursive p %1	,foreache
	gap	
max_cyl_ok,	
y2milestone	
add_part_recursive e %1
$||!haskey	max_cyl	max_cyl
end(!4cyl$,foreacha
	gap	added	&+
	cylinders&+		cylinders,	
y2milestone	
max_cyl_ok cyl %1&+
start	max_cyl,	
y2milestone	
 add_part_recursive max_cyl_ok %1(&&&&		cylinders
	cylinders||||&&!
extendedsize	free_pnr	&&&&&&	primary
created
extendedsize	free_pnr	&&&&!	primary
extendedsize	ext_pnr	4llgaddl$eval	(
exists4'gap		cylinders4'gap		cylinders-gap		cylinders		cylinders$	(&&
extended!	primary4&addext_pnr'ext_pnrremoveext_pnr	(!
exists4&addfree_pnr'free_pnrremovefree_pnr	4&add
nr'gap	addedaddgap	added	(+	size4,4ngval$
$

,	
y2milestone	
/add_part_recursive val %1 cur_weight %2 size %3
size(||
size4&
&eval
&	+	%psggindexpindexsort_map,	
y2milestone	
normalize_gaps gap %1$	$	,foreache
gap	,	
y2milestone	
normalize_gaps e %1
(
exists4(&&size
added	size
added	4'gap	addedadd
added	
orig_cyl4restneededtidx	$
	cylinders$$,foreachp

added	&
(want_cyl	cylinders4&-+want_cyl	cylinders,	
y2milestone	
 normalize_gaps needed %1 rest %2(4trweightr$
	$
maplistl
added	idxd$$-want_cyl	cylinders(4&add	cylinders&
add
-,	
y2milestone	
normalize_gaps tr %1
$

&


'gap	addedeval
added	'gap		cylinders-
	cylinders
diff,	
y2milestone	
'normalize_gaps partly satisfy %1 cyl %2gap	added	gap		cylinders4'	gap		cylinders-
	cylinders&	,
foreachp
gap	added	(size
4&
(want_cyl	cylinders4&
add
want_cyl4&
add
	cylinders'gap	added	
,	
y2milestone	
"normalize_gaps satisfy p %1 cyl %2

	cylinders&	+	, 	
y2milestone	
normalize_gaps added %1gap	added	&#	+	&%	,&foreache
gap	((&&!
exists
	cylinders4)weight$*maplistl

added	
size(,findl

4-r$.

&/

	cylinders
added	'1gap	addedeval
added	'2gap		cylinders-
	cylinders
diff,3	
y2milestone	
'normalize_gaps increase max p %1 cyl %2gap	added	gap		cylinders&8	+	&:	,;foreache
gap	(=&&&&!
exists
	cylinders
	cylinders/disk_cyl4?weightr$@maplistl

added	
$A
&B
	cylinders
added	'Cgap	addedevaladded	'Dgap		cylinders-
	cylindersdiff,E	
y2milestone	
*normalize_gaps close small gap p %1 cyl %2gap	added	gap		cylinders&I	+	&K	,Lforeache
gap	(N&&!
exists
	cylinders4Oweight$P	&Qmaplistl

added	
increasable,T	
y2milestone	
normalize_gaps w %1(Ufindl

4Vr$W

&X

	cylinders
added	'Zgap	addedeval
added	'[gap		cylinders-
	cylinders
diff'\
	cylindersgap		cylinders,]	
y2milestone	
/normalize_gaps increase increasable p %1 cyl %2gap	added	gap		cylinders&b	+	&d	,eforeache
gap	(g&&&&&&&&!
exists
extended
createdsize
added	
	cylinders4i'jgap	extended'kgap	added
created,l	
y2milestone	
"normalize_gaps changed extended %1gap	
&o	+	&q	$r	
//boot	/boot/efi/homeswap,tforeache
gap	(v&&!
existssize
added	4wnumssddidx,x	
y2milestone	
normalize_gaps old  added %1
added	$ymaplistl

added	
,z	
y2milestone	
normalize_gaps old nums %1${sortab


added	aibi$}
$~
(primaryprimary-primary(max_cylmax_cyl-max_cylmax_cyl-		mount		mount$,foreache
'&+'gap	added,	
y2milestone	
normalize_gaps sort added %1gap	added	&	+	,	
y2milestone	
normalize_gaps gap %1-%restweightsaddedpsdiff_sumsumindexpindexscount	loopcountret$	$	$	$	$	,	
y2milestone	
,distribute_space rest %1 weights %2 added %3$	*&	+	&	&	&	,foreachp&	(||	size_max_cyl	size_max_cyl4&	+		,	
y2milestone	
sum %1 weight %2 pindex %3			&	+	&	+	&	,	
y2milestone	
8distribute_space sum %1 rest %2 scount %3 added %4 lc %5			,foreachp&	(&&&&size	||	size_max_cyl	size_max_cyl4diff$
/+*	/		(&&	size_max_cyl
-	size_max_cyl4&
-	size_max_cyl&	-		&-
'	+	
&	+	
,	
y2milestone	
0distribute_space sum %1 rest %2 diff %3 added %4	
		&	+	&&&&		$	addeddiff	,	
y2milestone	
distribute_space ret %1	-	%psgretindexdiff	,	
y2milestone	
do_weighting gap %1gap	$	$	$	(reuse4&	-	d(resize4&	-	(	desparate4&	-	@B,	
y2milestone	
do_weighting after mode ret %1	,foreache
gap	,	
y2milestone	
do_weighting e %1
(&&!
exists
	cylinders4&	(
	cylinders/disk_cyl4&	-	
&	+		,	
y2milestone	
&do_weighting after gaps diff %1 ret %2		,foreachp
added	&	(&&&&
exists		mountswap
swap4&	d&	+		,	
y2milestone	
,do_weighting after swap reuse diff %1 ret %2		(	want_cyl4normdiff&	-	want_cyl$/*	d(	4&-(	4	&
/
&	-/*	want_cylcyl_size**d&	+		,	
y2milestone	
+do_weighting after pct parts diff %1 ret %2		(	size4&	/*cyl_size**2&	+		,	
y2milestone	
1do_weighting after maximizes parts diff %1 ret %2		(&&	size_max_cyl	size_max_cyl4normdiff&	-	size_max_cyl$/*	d	size_max_cyl&	-	,	
y2milestone	
.do_weighting after maximal size diff %1 ret %2-	(#&&size
added	
	cylinders4$diff$%/*
	cylinderscyl_size**&&	-	,'	
y2milestone	
*do_weighting after gap size diff %1 ret %2-	()
extended&*	-	,+	
y2milestone	
do_weighting %1	,-	
y2milestone	
do_weighting ret %1	-.	%2<ret$4	(5&&findp
	&&

typeunknownextended!
deletefindp
	&&

typeunknownlogical!
delete4;&<	maplistp	(>
typeunknownextended'?delete-@,B	
y2milestone	
-try_remove_sole_extended delete extended p:%1	-D	%Hdiskconfret$J	eval'K	
partitionsmaplistp
	
partitions	fsid$M
fsid(N&&&&&&&&&&||remove_special_partitions!contains

typeprimaryextended!containskeep_partition_num	
nr!containskeep_partition_id	!containskeep_partition_fsys	

used_fsnone
4U'V
delete-X
'Z	
partitions<	
partitions	-[	%_diskcyl_sizewinret$a	cyl_size$b	
$c	eval'e	
partitionsmaplistp
	
partitions	fsid$g
fsid(h4i&j	
winfo
,k	
y2milestone	
try_resize_windows win=%1	(l&&&&&&		ok
size_k*!	efi4n'o
winfo	'p
resize'q
region/-+	new_size		'r
win_max_length/-+	max_win_size		,t	
y2milestone	
try_resize_windows win part %1
-w
-y	%}=startendpartadd_exist_linuxretentry,	
y2milestone	
%get_gaps start %1 end %2 add_exist %3$		$	
,foreachp
se$
region$-+
region&	
(4'	start'	end-&	add	eval	(&&&&	size		
mount||
fsid
fsid4'	swap
fsid'	start'	end'	exists'	nr
nr&	add		&+(4&	
'	start'	end&	add		,	
y2milestone	
get_gaps ret %1	-	%	diskadd_exist_linuxretgapplist	exist_pnrmax_primhas_extmax_pos_cylendstart	av_size
max_pnrpnrfree_pnr
ext_pnrmax_logical$$	
$		$	filterp

partitions	!
delete&	sortab

	
region
region$	sortmapliste
	
nr(&&	labelmac!contains	4&	add	$		labelmsdos$		labelmsdos$	$	(	4ext$
filterp	
typeprimaryextended
'	extended_possiblesize
'	ext_reg
region	(size
4&	-+
region
region(	+
region	&	+
region	&	=
region	filterp	nr	&	mapliste	'extended-&	filterp	nr	4'	extended_possible&	-	cyl_count(		&		$	(	labelsun&	&	union	=			$		&	mapliste
	'
	cylinders+-
end
start'
size*
	cylinderscyl_size&		+		
size-
&	mapliste
	'
sizepct//*
size		(
sizepct4'
sizepct-
'	cyl_sizecyl_size'	disk_cyl	cyl_count'	sum		$	
	$	$		,	
y2milestone	
get_gap_info exist_pnr %1	)		
4(!contains		4&	add		&	+	'	free_pnr	$	
	;	

 !"#$%&'()*+,-./0123456789:;<=>?$	max_logical(	?4&	
filteri	
	(!	4&	
	4maxlog$
+sizefilteri		
&		
filteri	

'	ext_pnr	
'	gap	,
	
y2milestone	
get_gap_info ret %1	-	%xmlflexconffsysnlist	
partitions$partitioningflexible_partitioning,	
y2milestone	

xml input: %1$
'
prefer_remove
prefer_remove'remove_special_partitionsremove_special_partitions'keep_partition_id	' keep_partition_num	'!keep_partition_fsys	,#		foreachkey			keep_partition_idkeep_partition_numnumnlist	$%
	$&
			splitstring					,,'		foreachn	
&'
union
	tointeger'(	
$+	$,			splitstring				keep_partition_fsys,,-		foreachn		fs
$/
	(0
none41&2union
'5keep_partition_fsys$6	,7foreachp	
partitions		partition$9

(;	disk4<'=
disk	disk(?	id4@'A
id	id(D		fstopt4E'F
fstopt		fstopt(I			formatopt4J'K
fopt			formatopt'N
increasable	increasable(P		mount4Q'R
mount		mount(U	percent4V'W
pct	percentd(Z		label4['\
label		label(_		maxsize4`'a
maxsize		maxsize(d		fsys4efs
$f		fsys(gnone4h'i
fsys(m		size4ns	$o		size(p		tolower		auto4q'r
size(t		tolower		max4u'v
size4y'z
size(~&&
size	
mountswap4'
size**(	
mount4(
size4'
size(

fsysnonenone4'
fsys(
id4'
id'
max_cyl(
size4'
size,	
y2milestone	

partition: %1
(||	size		
mount
id4&add
'
partitions(size4&
4'
partitions,	
y2milestone	
conf %1-%fpath	
posline	rex	confcstring	lines	fndfsys
partitions	part$	$	$	$	
'	
prefer_remove'	remove_special_partitions'	keep_partition_id	'	keep_partition_num	'	keep_partition_fsys	$			SCR::Read.target.string$				filtere	
			splitstring				
	size	
&	[ 	]*#.*,	
y2milestone	
lines %1	&				filtere	
	!		regexpmatch		
[ 	]*#.*,	
y2milestone	
lines %1	$		,		foreachkey	
	
PREFER_REMOVEREMOVE_SPECIAL_PARTITIONS&	+			+			[ 	]*
[ 	]*=&				filtere				regexpmatch			,	
y2milestone	

rex %1 fnd %2		(size	4&				deletechars					-size		 &			
findlastof			=(	4'			tolower		
	tointeger			substring			+	,		foreachkey	
	KEEP_PARTITION_IDKEEP_PARTITION_NUM&	+			+			[ 	]*
[ 	]*=,	
y2milestone	
rex %1	,		foreachl				filtere	
			regexpmatch		
	,	
y2milestone	
line %1&				deletechars				 &			
findlastof			=(	4numnlist	$	$			splitstring						substring			+	,,		foreachn	&union	tointeger'			tolower		
union			tolower		
	$		&	+			+			[ 	]*KEEP_PARTITION_FSYS[ 	]*=,		foreachl	
			filtere				regexpmatch			,	
y2milestone	
line %1
&				deletechars			
	 &			
findlastof			=(	4nlist	$			splitstring						substring			+	,,		foreachn	
fs
$
(none4&	union	'	keep_partition_fsys	$		$		
&	+			+			[ 	]*	PARTITION	[ 	][ 	]*,		foreachl	
			filtere				regexpmatch			par	key	pos,	
y2milestone	
line %1
$$$		search		
	PARTITION&				substring		
+
,	
y2milestone	
line %1	&			search			=&			
)	4	&				deletechars						substring			 	&					substring			+(				substring			"4	&					substring			&				search			"&
				substring			&					substring			+4	&			findfirstof			 	(	4	&		4	&				substring			&					substring			+,		
y2debug	
key %1 par "%2"(	id4	'				tointeger(	mount4 	'!			(#	increasable4$	'%			increasable	tointeger('	size4(	()			tolower		auto4*	'+			size(-			tolower		max4.	'/			size42	'3			size(6	label47	'8			(:	maxsize4;	'<			(>	sizepct4?	'@			pct	tointeger(B	disk4C	'D				tointeger(F	fsys4G	fs
$H	
(I	
none4J	'K			
(N	fstopt4O	'P			(R		formatopt4S	'T			fopt&V			search			=,X		
y2milestone	
part %1		(Y	&&		size			mountswap4Z	'[			size**(]				mount4^	(_			size4`	'a			size(c	
		fsysnonenone4d	'e			fsys(g			id4h	'i			id'k			max_cyl(m			size4n	'o			size(q	||	size				mount		id4r	&s		add			'v		
partitions	(w	size	4x	&y		
4|	'}		
partitions	,		
y2milestone	
conf %1	-		%	>retswaps	$		
,		
y2milestone	
$can_swap_reuse disk %1 partitions %2$		filterp
&&&&

typeunknownfree!
delete

detected_fsunknownswap&		filterp
	1	
device&		sortab

	
size_k
size_k,		
y2milestone	
can_swap_reuse swaps %1	(		size_k*4	'		
partitionsmaplistp(	&&!delete	device		device4	(		mountswap'	inactive'	mountswap(	haskeyvg4	&	removevg(	change_fsid'	fsidori_fsid-	4	tg	&			$	
			filterk	d(	haskey
&	
			remove
,		
y2milestone	
can_swap_reuse tg wo %1
,			foreachdev	disk
sw$	filterp

partitions	&&&&

typeunknownextended!
delete

detected_fsunknownswap&	filterp
1	
device,		
y2milestone	
can_swap_reuse disk %1 sw %2&		union	&		sortab	size_ksize_k,		
y2milestone	
can_swap_reuse swaps %1	(		size_k*4	'		targets		devicemountswap'		targets	targets
		devicevg,		
y2milestone	
can_swap_reuse ret %1	-		%	?disk	label	bootmax_prim
partitionsret$			,		
y2milestone	
can_boot_reuse boot:%1(	&&!4	plboot,		
y2milestone	
3can_boot_reuse disk:%1 max_prim:%2 label:%3 part:%4$	
	&	
filterp&&!delete*size_k$	
findp
||||||fsid&&fsidsize_k*&&&&
detected_fsunknownhfsbootmac&&&&fsidnr(	
4	&		maplistp(	&&&&!delete	device	
device4	&	-	,		
y2milestone	
can_boot_reuse ret:%1	-		%	@mp	minmax
partitionsretpl	$			(	&	+/
,		
y2milestone	
 can_mp_reuse mp %1 min %2 max %3$			&		filterp
&&&&&&&&&&&&!
delete
fsid

used_by_typeUB_NONEUB_NONE	size		
mount/
size_k||/
size_k
,
	
y2milestone	
can_mp_reuse normal %1	(
size	4
&
	sortab	size_ksize_k,
	
y2milestone	
can_mp_reuse sorted %1	&	
	maplistp(
&&!delete	device		device4
&
-
,
	
y2milestone	
can_mp_reuse ret %1	-
	%
Apartsret$
	,
foreachpp
filterp&&delete
typeunknownextended& 
	+	/
size_k,"
	
y2milestone	
get_avail_size_mb ret %1	-#
	%'
Bspacel$)
	,*
	
y2milestone	
get_swap_sizes space %1 ret %2	-+
	%/
Cretrootoptsconf
swap_sizes
avail_sizeold_rootps1$1
		,2
	
y2milestone	
!get_proposal have_swap:%1 disk %2$3
	mount/increasablefsyssize$5
	'$6
	

partitions$7
		$8
	A
partitions	(9
!4:
swap&;
	B	$<

mountswapincreasablefsysswapmaxsize***size**	'?
	
partitionsadd	
partitions	
'A
	
partitionsadd	
partitions		$B
	
(C
&&	
home_limit	4D
home$E

mount/homeincreasablefsyssize**pct-d	root_percent('H
	
partitionsmaplistp	
partitions	(J
	mount/4K
&L
	'M
pct	root_percent('N
maxsize**	root_max'O
size**		root_base-Q
'S
	
partitionsadd	
partitions	
$U
	7	(V
&&size	!	ok4W
'X
	
partitionsfilterp	
partitions	&&	mount/home	mount/'[
	
partitionsadd	
partitions		&\
	7	(^
!4_
diff$`

-		(a

&b

-
,c
	
y2milestone	
get_proposal diff:%1 ps1 ok:%2
	ok(d
||&&!	ok

d4e
ps2'f
	
partitionssize**	$g
7	,h
	
y2milestone	
get_proposal ps2 ok:%1ok(i
ok4j
rp1rp2$k
findp
	disk
partitions	&&!
delete	
mount/$m
findp
disk
partitions	&&!
delete	
mount/,o
	
y2milestone	
get_proposal rp1:%1,p
	
y2milestone	
get_proposal rp2:%1(q
||&&size_ksize_k&r
	(v
	ok&w
		disk
partitions	,x
	
y2milestone	
get_proposal ret:%1	-y
	%}
Ddiskreuse_linuxretcyl_sizedisk_cyl
partitionslast_end
$
	$
	cyl_size$
		cyl_count$
	filterp

partitions	!
create&
	sortp1p2

	
region
region$
	,
foreachp
	(

region	&
	+	*-
region		(
&&

typeunknownextended||
delete&&
linux&
	+	*
size_k&
	
region(


typeunknownextended&
	+	
region(
		&
	+	*-			&
	/	*-
	%
Esolmp	paret$
	findp
disk
partitions		
mount,
	
y2milestone	
get_mb_sol pa %1	$
		/	size_k,
	
y2milestone	
get_mb_sol ret %1	-
	%
Fsolret$
	,
foreachp
disk
partitions	(
&&!
delete||	size		
mount	size		
vg&
	+	/
size_k,
	
y2milestone	
get_vm_sol ret %1	-
	%
G
partitionsret$
	(
4
&
	maplistp(
&&	size		mount||fsidfsidA'
delete-
,
	
y2milestone	
%special_boot_proposal_prepare part:%1,
	
y2milestone	
%special_boot_proposal_prepare  ret:%1	-
	%
Hddev	tg		linux_pid$
	,
		foreachs	
'


partitionsmaplistp

partitions	(
||||||contains	fsidfsid&&fsidsize_k*&&||fsidfsid'
linux'
linux-
-
%
Itg	softret	$
		&
					maplistk	e

			filterl	f!-
&
			sort	(
size	4
&
	9	,
	
y2milestone	
 get_disk_try_list soft:%1 ret:%2	-
	%
Jpassert_cons_fsret$
	&&&&&&fsidsize_k*!resize!delete(
	4
(
&
	&&winfook!winfoefi&
	sizewinfo
-
	%
Kpartsmp	rems	$
		resizeused_fswin_max_lengthmountformat	ignore_fsvg&maplistp
(&&||size		contains	
mount!&&	
mountswap!
inactive4,		foreachs	
	(	haskey

&

remove

-

-%Ldisk
partitionspl$	
partitions	$	filterp
	&&&&&&
linux	size		
mount!
delete
(size	4&	sortab	size_ksize_k&	unionfilterp	
used_by_typeUB_NONEUB_NONEfilterp	
used_by_typeUB_NONEUB_NONE&"	maplistp	(%&&&&&&&&linux!delete	size		mount	device		device4)'*delete,+	
y2milestone	
remove_one_partition p %1--&/	<	-1	%5Mdisk
partitionspl$7	
partitions	$8	filterp
	&&&&&&
linux	size		
mount!
delete
(<size	4=nr&>	sortab	size_ksize_k&@	unionfilterp	
typeprimarylogicalfilterp	
typeprimarylogical&C	unionfilterp	
used_by_typeUB_NONEUB_NONEfilterp	
used_by_typeUB_NONEUB_NONE,F	
y2milestone	
remove_one_partition_vm pl %1	$H
&J	maplistp	(M&&&&&&&&linux!delete	size		mount	device		device4Q'Rdelete&S
nr,T	
y2milestone	
remove_one_partition_vm p %1-V(X
max_primary4Y&Z	maplistp	(]&&!deletenr
4^'_nr-nr'`device	devicenr,b	
y2milestone	
remove_one_partition_vm ren %1-d&g	<	-i	%mNtgdisk	uby	$o		used_by_device,p	
y2milestone	
remove_used_by disk %1 uby %2	(q	size		4r(shaskey	4t'u	delete,v	
y2milestone	
remove_used_by uby %1	
-y%}Otarget	
ret	rootoptsddev	sol_disk	modesvalid	size_mb	solution	mode
,	
y2milestone	
get_inst_proposal start,0$	
&.'	target$	mount/increasablefsyssize$	'$	I$	$		freereuseremoveresize	desparate$	
$					listmaps	
	
	$					listmaps	
	
	&H	$		free)&&		end	size		4max_mbmax_disk	
(||		free			desparate4&					listmaps		(			desparate4&	I&					listmaps	
	
&H	,		foreachs	
	'

partitionsK

partitions		'

partitionsmaplistp

partitions	(&&!containsfsid

4(J'dtxtHResize impossible due to inconsistent fs. Try checking fs under Windows.storage'delete-(		reuse4&					listmaps		(findp
partitions	&&&&&&linux	size		mount!delete--(		remove4&					listmaps		(findp
partitions	&&&&&&linux	size		mount!delete
--,		foreachs		'
partitionsK
partitions		//home,		foreachs				filterd	
		
'
partitionsL
(		resize4&					listmaps		(findp
partitions	J--,		foreachs				filterd	
		
pl$
filterp
partitions	J(size
4&
sortab
size_ksize_k'
partitionsmaplistp
partitions	(&&J	device	
device4cs$cyl_size'resize'region/-+winfonew_size'win_max_length/-+winfomax_win_size(4&	device&&(&&	device4&-,	
y2milestone	
get_inst_proposal res parts %1
partitions	,	
y2milestone	
"get_inst_proposal mode %1 valid %2			,		foreachs				filterd			
confdiskp	have_home	have_root	have_bootr	have_swap
swap_sizes	
avail_size$

partitions$
$	?	labelmsdos4max_primary
partitions	'

partitionsG
partitions	$$$&&||!||		freesize('
partitions$>
partitions	$size,	
y2milestone	
+get_inst_proposal have_boot %1 have_swap %2(haskey
partitions'
partitions
partitions	(haskeytargets&targets
$	$	D		reuse,	
y2milestone	
*get_inst_proposal disk %1 mode %2 avail %3			( 	4!old_rootps1	("		reuse4#parts$$
partitions	(%4&('		
home_limit&(@/home*&*@/		root_base(-&&size		
home_limit4.mx$/(0&1	root_max&2@/		root_base(5size46&7		
home_limit&8'9
partitions,;	
y2milestone	
1get_inst_proposal reuse have_home %1 have_root %2(=&&,>	
y2milestone	
 get_inst_proposal reuse parts %1
partitions	(A!4Bswap&CB	$Dmountswapincreasablefsysswapmaxsize***size**'G
partitionsadd
partitions	(I!'J
partitionsadd
partitions		$K

(L&&&&!	
home_limit	4Nhome$Omount/homeincreasablefsyssize**pct-d	root_percent('S
partitionsmaplistp
partitions	(V	mount/4W&X
'Ypct	root_percent('Zmaxsize**	root_max'[size**		root_base-]'_
partitionsadd
partitions	$a
7		reuse(c&&size
!
ok4d'e
partitionsfilterp
partitions	&&	mount/home	mount/'i
partitionsadd
partitions	
&j
7		reuse(m!4ndiff$o-(p&q-,r	
y2milestone	
#get_inst_proposal diff:%1 ps1 ok:%2
ok(t||&&!
okd4ups2'v
partitionssize**$x7		reuse,z	
y2milestone	
get_inst_proposal ps2 ok:%1ok(|ok4}rp1rp2$~findp
disk
partitions	&&!delete	mount/$findpdisk
partitions	&&!delete	mount/,	
y2milestone	
get_inst_proposal rp1:%1,	
y2milestone	
get_inst_proposal rp2:%1(||&&size_ksize_k&
(
ok4mb$E
/(&addE
/home(++		4'	
disk
'	,	
y2milestone	
get_inst_proposal sol %1 mb %2		$
$
,		foreachs	mb	(&&||||!		resize+
4&
+&
,	
y2milestone	
&get_inst_proposal max_mb %1 size_mb %2
	(&&&&
	
*||!	
*4&	
,	
y2milestone	
$get_inst_proposal mode %1 size_mb %2			(	size		4lb$		maplists	e	(		free&		reuse(		reuse&		remove(&&		removefindv&		resize(&&		resizefindv&			desparate(			desparate&		end(&&			desparate	size		4&
,		foreachs	mb

	(&&+



*4&
+

&	
,	
y2milestone	
%get_inst_proposal mode %1 sol_disk %2			,	
y2milestone	
get_inst_proposal sol_disk %1	(	size		4max_mb$
,		foreachs	mb	(&&+
4&
+&	,	
y2milestone	
get_inst_proposal sol_disk %1	'	ok	size		(	ok4'	targetN	target
	'	target			
'	target	target
,	
y2milestone	
get_inst_proposal sol:%1	target	
,	
y2milestone	
get_inst_proposal ret[ok]:%1	ok-	%Pplkeys	&maplistp
,		foreachk	(haskey
&
remove
-
-%Qtarget	,		foreachs	disk

'

partitionsmaplistp

partitions	(&&&&haskeymount		search			mount	/windows/		search			mount/dos/&removemount-,
P

partitions		mount-
%
Rtg	ky	key	,

	
y2milestone	
remove_vm key:%1$
	+			/dev/(
haskey	4

dl	'
	delete'
	
partitionsmaplistp	
partitions	'
delete-
,
	
y2milestone	
remove_vm removed:%1	
$

	devices	,
		foreachd	
&
used_by_type&
used_by_device-
% 
Starget	ky	min_sizeret	key	$"
	$#
	+			/dev/($
&&&& 	lvm2	size_k&&
		,'
	
y2milestone	
!find_vm key:%1 min_size:%2 ret:%3	-(
	%,
T
partitionsvg	retele	$.
	$/
	+			/dev/+				/dev/lvm/+			
/dev/lvm2/,0
foreachp
(2
&&&&!	
delete		contains		
used_by_device&3
	,5
	
y2milestone	
did_remove_vg vg:%1 ret:%2	-6
	%:
Upekpebytepvcreateret$<
	/-/,=
	
y2milestone	
/sizek_to_pe pek %1 pebyte %2 pvcreate %3 ret %4	-?
	%C
Vpepebyteret$E
	*/,F
	
y2milestone	
"pe_to_sizek pe %1 pebyte %2 ret %3	-G
	%K
Wvgkey	diskdevsnum_pe,M
	
y2milestone	
extend_vm key %1 vg %2,N
	
y2milestone	
extend_vm disk %1$O
		$P
	pe_free,Q
foreachp

partitions	(S
	
vg4T
&U
	add		
device&V
	+	U
size_kpesize,Z
	
y2milestone	
extend_vm num_pe %1 devs %2		'[
devices_add	'\
pe_free	']
size_kV	pesize,^
	
y2milestone	
extend_vm ret %1-_
%c
Xkey	diskretdevsnum_pe,e
	
y2milestone	
create_vm key:%1 disk:%2$f
	typeCT_LVMnamedevice+			/dev/lvm2create
partitions	pesize**$m
		$n
	,o
foreachp

partitions	(q
&&	
vg!
delete4r
&s
	add		
device&t
	+	U
size_k	pesize,x
	
y2milestone	
create_vm num_pe %1 devs %2		'y
	devices_add	'z
	pe_free	'{
	size_kV		pesize,|
	
y2milestone	
create_vm ret %1	-}
	%
Yvmopts	need_swap
retfreepeswsizeswlistswaproothomekeep	root_pe
mswap_pehome_pe!,
	
y2milestone	
modify_vm swap %1 start %2,
	
y2milestone	
modify_vm opts %1$
	$
		pe_free$
		pesize$
	$
		(
4
&
	B	&
					,
	
y2milestone	
modify_vm swsize %1	$
	findp
	
partitions		
nameswap$
	findp
	
partitions		
nameroot$
	findp
	
partitions		
namehome,
	
y2milestone	
!modify_vm swap %1 root %2 home %3			(
&&		size_k*4
'
	
partitionsmaplistp	
partitions	(
	nameroot4
'
delete&
	+	Usize_k	,
	
y2milestone	
modify_vm remove root %1-
,
	
y2milestone	
modify_vm pe free %1	&
	'
	
partitionssortab

	
partitions	
size_k
size_k$
		roothomeswap$
		U*	root_base	,
	
y2milestone	
modify_vm pe free %1 root %2			$
	
findp
	
partitions	&&!
delete!contains		
name)
&&&&					
4
'
	
partitionsmaplistp	
partitions	(
	name		
name4
'
delete&
	+	Usize_k	-
,
	
y2milestone	
#modify_vm pe free %1 root %2 del %3				
&
	
findp	
partitions	&&!delete!contains		name(
&&&&&&						4
'
	
partitionsmaplistp	
partitions	(
	nameswap4
'
delete&
	+	Usize_k	-
&
	,
	
y2milestone	
modify_vm pe free %1 root %2			(
&&&&					4
&
					,
	
y2milestone	
modify_vm new swsize %1	(
&&&&&&						/	size_k4
'
	
partitionsmaplistp	
partitions	(
	nameswap4
'
delete&
	+	Usize_k	-
&
	,
	
y2milestone	
modify_vm pe free %1 root %2			$
	$
	(
&&		&
	U*		(
	+			4
,
	
y2milestone	
$modify_vm pe free %1 root %2 swap %3				(
&&			4
&
		&
	(
	4
&
			&
	4
&
	/*		+			&
		-		&
	,
	
y2milestone	
$modify_vm pe free %1 root %2 swap %3				4
&
	-		,
	
y2milestone	
$modify_vm pe free %1 root %2 swap %3				(
&&&&		U*
home_limit	4
tmp
$
/*	root_percent(d(
		&
		&U*root_max	(		&		&	-			&		&U*home_max	(	&	&	-		,		
y2milestone	
$modify_vm pe free %1 root %2 home %3				4
tmp$U*root_max	&			(		&		&	-			,	
y2milestone	
,modify_vm pe free %1 root %2 swap %3 home %4					(&&			4p$
createnamerootdevice+					device/rootsize_kV			&

/,	
y2milestone	
modify_vm created %1
'	
partitionsadd	
partitions	
(!	4"'#	
partitionsmaplistp	
partitions	(%	nameroot4&&'/,)	
y2milestone	
modify_vm reuse %1-+(.&&		4/p$0
createnameswapdevice+					device/swapsize_kV		&3

swapswap,5	
y2milestone	
modify_vm created %1
'6	
partitionsadd	
partitions	
(8	49':	
partitionsmaplistp	
partitions	(<	nameswap4=&>swapswap,@	
y2milestone	
modify_vm reuse %1-B(E&&		4Fp$G
createnamehomedevice+					device/homesize_kV		&J

/home,L	
y2milestone	
modify_vm created %1
'M	
partitionsadd	
partitions	
(O	4P'Q	
partitionsmaplistp	
partitions	(S	namehome4T&U/home,W	
y2milestone	
modify_vm reuse %1-Y,\	
y2milestone	
modify_vm ret %1	-]	%aZtarget	key	ret	optsvg_key	bootddev	sol_disk	modesvalid	size_mb		keep_vg	
solutionmode
,c	
y2milestone	
get_inst_prop_vm start key %1$d	
$e	'$f	S*		root_base&gQ(h	size		&iR&j.'k	target$l	mountsizefsysidmax_cyl(q4r's	primary$u	I$v	$w		freeremoveresize	desparate$x	
$y					listmaps	
	
$z		
${	
				listmaps	
	
	&|H	$}	free)~&&	end	size		4max_mbmax_disk		keep_disk	(||	free		desparate4&					listmaps		(		desparate4&	I&					listmaps	
	
&H	,		foreachs	
	'

partitionsK

partitions		'

partitionsmaplistp

partitions	(&&!containsfsid

4(J'dtxtHResize impossible due to inconsistent fs. Try checking fs under Windows.storage'delete-(	remove4&					listmaps		(findp
partitions	&&&&&&linux	size		mount!delete
--,		foreachs				filterd	
		
'
partitionsM
(	resize4&					listmaps		(findp
partitions	J--,		foreachs				filterd	
		
pl$
filterp
partitions	J(size
4&
sortab
size_ksize_k'
partitionsmaplistp
partitions	(&&J	device	
device4cs$cyl_size'resize'region/-+winfonew_size'win_max_length/-+winfomax_win_size(4&	device&&(&&	device4&-,	
y2milestone	
get_inst_prop_vm res parts %1
partitions	,	
y2milestone	
!get_inst_prop_vm mode %1 valid %2		,		foreachs				filterd			diskconfp	have_bootvg	ps
$
$

partitions$?	labelmsdosmax_primary
partitions	'
partitionsG
partitions	$size('
partitions$	(&&	size	T
partitions	&$8
	(ok4mb$
F(-
	/	(4,	
y2milestone	
)get_inst_prop_vm new sol %1 old %2 new %3	
'	
disk
'	
(&&	size	!		'		,	
y2milestone	
&get_inst_prop_vm size_mb %1 keep_vg %2			$
$
$
,		foreachs	mb	(
4&
&
,		foreachs	keep		(
&&	size	
4&
(	size	
4&	
(&&
	
	vm_want*4&	
&	,	
y2milestone	
$get_inst_prop_vm mode %1 sol_disk %2		(	size		4lb$		maplists	e	(	free& 	remove(!&&	removefindv&"	resize(#&&	resizefindv&$		desparate(%		desparate&&	end,)	
y2milestone	
get_inst_prop_vm sol_disk %1	(*	size		4+max_mb$,
,-		foreachs	mb	(/
40&1
&2	,5	
y2milestone	
get_inst_prop_vm sol_disk %1	'7	ok	size		(8	ok49r$:
>		
	
partitions		target
(<haskey

partitions'=	
	
partitions

partitions	(>haskey
targets'?	target
targets
'@	targetN	target
	(A	size		4Bvg&C	+			/dev/$D	target	
&EunionX	
	
(Fsizedevices	4G&Hremovedevices,J	
y2milestone	
get_inst_prop_vm vkey %1'K	target	4Nvg$O	target	
&PW	
	
'Q	target	'S	target	Y	target	
	size
'U	target		
	
'V	target	target
,W	
y2milestone	
get_inst_prop_vm sol:%1	target	
,Y	
y2milestone	
get_inst_prop_vm ret[ok]:%1	ok-Z	%^[ddev	ret	optsbootconfp	have_bootps$`		device,a	
y2milestone	
7get_proposal_vm ddev:%1 vg:%2 home:%3 lvm:%4 encrypt:%5	 "$c	
$d	'&eQ&fR'g	target$h	mountsizefsysidmax_cyl(m4n'o	primary$q	

partitions$r	?		labelmsdosmax_primary
partitions	'u
partitionsG
partitions	$v	size	(w	'x
partitions	$y	8	
	'z	ok	ok({	ok4|rvg_key	vg&}	disk
$~
>	
partitions		target
(haskey

partitions'
partitions

partitions	(haskey
targets'	target
targets
'	targetN	target
	$
+			/dev/$
	target

&
union
X(size
devices	4&
remove
devices,	
y2milestone	
get_proposal_vm vkey %1
'	target
Y
	size
'	target	'	target)	target

'	target	target
,	
y2milestone	
get_proposal_vm sol:%1,	
y2milestone	
get_proposal_vm ret:%1	-	%\ret	vg	$	
$	(,	
y2milestone	
,get_inst_prop vg:%1 home:%2 lvm:%3 encypt:%4	 "(	isempty		4(3&	;&	O4,	
y2milestone	
	target:%1&	Z	'	target)	target
+			/dev/	,	
y2milestone	
get_inst_prop ret:%1	-	

ACC SHELL 2018