Hello community, here is the log from the commit of package yast2-storage for openSUSE:Factory checked in at 2012-03-20 12:04:25 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/yast2-storage (Old) and /work/SRC/openSUSE:Factory/.yast2-storage.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-storage", Maintainer is "[email protected]" Changes: -------- --- /work/SRC/openSUSE:Factory/yast2-storage/yast2-storage.changes 2011-12-07 14:40:39.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.yast2-storage.new/yast2-storage.changes 2012-03-20 12:04:31.000000000 +0100 @@ -1,0 +2,63 @@ +Tue Mar 13 15:15:28 CET 2012 - [email protected] + +- warn about slowness when resizing mounted fs by more than 50Gig + (bnc#749946) +- 2.22.1 + +------------------------------------------------------------------- +Mon Mar 05 11:30:46 CET 2012 - [email protected] + +- allow equal-sign "=" in passwords (bnc#750306) + +------------------------------------------------------------------- +Wed Jan 25 12:20:53 CET 2012 - [email protected] + +- allow resize and move of simple btrfs volumes if they are + formatted anyway (bnc#742491) +- fix bug handling used devices of simple btrfs volumes in resize + +------------------------------------------------------------------- +Tue Jan 24 14:15:29 CET 2012 - [email protected] + +- do not query user to autostart multipath in AutoYaST (bnc#742913) + +------------------------------------------------------------------- +Tue Jan 24 13:52:45 CET 2012 - [email protected] + +- ensure default mountby uuid for btrfs in all cases +- prevent display of outdated data with simple btrfs volumes + +------------------------------------------------------------------- +Thu Jan 19 10:52:02 GMT 2012 - [email protected] + +- improved layout for small screens (bnc#740006) + +------------------------------------------------------------------- +Tue Jan 10 18:59:52 CET 2012 - [email protected] + +- fix parsing problem with old style size values (e.g. 10G instead + of 10GB) (bnc#740560) + +------------------------------------------------------------------- +Mon Jan 9 16:39:46 CET 2012 - [email protected] + +- fix missing /boot partition in proposal (bnc#739091) +- do not enforce subvolumes to start with "@/" on openSuSE + (bnc#738542) + +------------------------------------------------------------------- +Tue Jan 03 11:59:51 CET 2012 - [email protected] + +- removed generating fstab entries for ZIP drives + +------------------------------------------------------------------- +Wed Dec 21 12:04:31 CET 2011 - [email protected] + +- handle FBA DASD with parted instead of fdasd (bnc#584703) + +------------------------------------------------------------------- +Tue Dec 20 14:08:55 CET 2011 - [email protected] + +- fix proposal to reuse also larger root filesystems (bnc#727362) + +------------------------------------------------------------------- Old: ---- yast2-storage-2.22.0.tar.bz2 New: ---- yast2-storage-2.22.1.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ yast2-storage.spec ++++++ --- /var/tmp/diff_new_pack.bFfUFB/_old 2012-03-20 12:04:33.000000000 +0100 +++ /var/tmp/diff_new_pack.bFfUFB/_new 2012-03-20 12:04:33.000000000 +0100 @@ -1,7 +1,7 @@ # # spec file for package yast2-storage # -# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,7 +18,7 @@ Name: yast2-storage -Version: 2.22.0 +Version: 2.22.1 Release: 0 BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -26,7 +26,7 @@ Group: System/YaST License: GPL-2.0+ -BuildRequires: blocxx-devel boost-devel gcc-c++ libtool libxcrypt-devel openssl-devel sablot swig +BuildRequires: blocxx-devel boost-devel gcc-c++ libtool openssl-devel sablot swig BuildRequires: docbook-xsl-stylesheets doxygen libxslt perl-XML-Writer sgml-skel update-desktop-files BuildRequires: libstorage-devel >= 2.21.11 yast2 >= 2.19.4 yast2-core-devel >= 2.18.1 yast2-devtools BuildRequires: yast2-perl-bindings yast2-testsuite >= 2.19.0 ++++++ yast2-storage-2.22.0.tar.bz2 -> yast2-storage-2.22.1.tar.bz2 ++++++ ++++ 5893 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-storage-2.22.0/VERSION new/yast2-storage-2.22.1/VERSION --- old/yast2-storage-2.22.0/VERSION 2011-11-15 15:03:04.000000000 +0100 +++ new/yast2-storage-2.22.1/VERSION 2012-03-16 16:16:25.000000000 +0100 @@ -1 +1 @@ -2.22.0 +2.22.1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-storage-2.22.0/configure.in new/yast2-storage-2.22.1/configure.in --- old/yast2-storage-2.22.0/configure.in 2011-12-06 17:21:23.000000000 +0100 +++ new/yast2-storage-2.22.1/configure.in 2012-03-16 16:17:08.000000000 +0100 @@ -3,7 +3,7 @@ dnl -- This file is generated by y2autoconf 2.21.6 - DO NOT EDIT! -- dnl (edit configure.in.in instead) -AC_INIT(yast2-storage, 2.22.0, http://bugs.opensuse.org/, yast2-storage) +AC_INIT(yast2-storage, 2.22.1, http://bugs.opensuse.org/, yast2-storage) dnl Check for presence of file 'RPMNAME' AC_CONFIG_SRCDIR([RPMNAME]) @@ -18,7 +18,7 @@ AM_INIT_AUTOMAKE(tar-ustar -Wno-portability) dnl Important YaST2 variables -VERSION="2.22.0" +VERSION="2.22.1" RPMNAME="yast2-storage" MAINTAINER="Arvin Schnell <[email protected]>" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-storage-2.22.0/storage/src/include/custom_part_dialogs.ycp new/yast2-storage-2.22.1/storage/src/include/custom_part_dialogs.ycp --- old/yast2-storage-2.22.0/storage/src/include/custom_part_dialogs.ycp 2011-11-18 15:27:09.000000000 +0100 +++ new/yast2-storage-2.22.1/storage/src/include/custom_part_dialogs.ycp 2012-01-10 10:01:00.000000000 +0100 @@ -16,7 +16,7 @@ * ************************************************************* - $Id: custom_part_dialogs.ycp 66875 2011-11-18 14:27:06Z aschnell $ + $Id: custom_part_dialogs.ycp 67130 2012-01-09 15:41:07Z fehr $ */ { @@ -1401,15 +1401,17 @@ if( ret == `add ) { string pth = (string)UI::QueryWidget( `id(`new_path), `Value ); - y2milestone( "SubvolHandling add path:%1", pth ); + string svtmp = FileSystems::default_subvol + "/"; + y2milestone( "SubvolHandling add path:%1 svtmp:%2", pth, svtmp ); y2milestone( "SubvolHandling names:%1", SubvolNames( new ) ); if( pth==nil || size(pth)==0 ) Popup::Message(_("Empty subvolume name not allowed.")); - else if( substring( pth, 0, 2 )!="@/" ) + else if( size(FileSystems::default_subvol)>0 && + substring( pth, 0, size(svtmp) )!=svtmp ) { - Popup::Message( _("Only subvolume names starting with \"@/\" currently allowed! -Automatically prepending \"@/\" to name of subvolume.")); - pth = "@/" + pth; + string tmp = sformat( _("Only subvolume names starting with \"%1\" currently allowed! +Automatically prepending \"%1\" to name of subvolume."), svtmp ); + Popup::Message( tmp ); } if( contains( SubvolNames( new ), pth )) Popup::Message(sformat(_("Subvolume name %1 already exists."),pth)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-storage-2.22.0/storage/src/include/ep-all.ycp new/yast2-storage-2.22.1/storage/src/include/ep-all.ycp --- old/yast2-storage-2.22.0/storage/src/include/ep-all.ycp 2011-11-18 15:20:06.000000000 +0100 +++ new/yast2-storage-2.22.1/storage/src/include/ep-all.ycp 2012-02-24 12:30:38.000000000 +0100 @@ -52,6 +52,11 @@ list<term> configs = []; + if (true) { + // menu entry text + configs = add(configs, `item(`id(`cryptpwd), `icon("yast-encrypted"), _("Provide Crypt &Passwords..."))); + } + if (IsAvailable("iscsi-client")) { // menu entry text configs = add(configs, `item(`id(`iscsi), `icon("yast-iscsi-client"), _("Configure &iSCSI..."))); @@ -60,15 +65,19 @@ if (true) { // menu entry text configs = add(configs, `item(`id(`multipath), `icon("yast-iscsi-server"), _("Configure &Multipath..."))); - // menu entry text - configs = add(configs, `item(`id(`cryptpwd), `icon("yast-encrypted"), _("Provide Crypt &Passwords..."))); } - if (Arch::s390() && IsAvailable("s390")) { + if (Arch::s390() && IsAvailable("dasd")) { // menu entry text - configs = add(configs, `item(`id(`dasd), `icon("yast-dasd"), _("Configure &DASD..."))); + configs = add(configs, `item(`id(`dasd), `icon("yast-dasd"), _("Configure &DASD..."))); + } + + if (Arch::s390() && IsAvailable("zfcp")) { // menu entry text - configs = add(configs, `item(`id(`zfcp), `icon("yast-zfcp"), _("Configure &zFCP..."))); + configs = add(configs, `item(`id(`zfcp), `icon("yast-zfcp"), _("Configure &zFCP..."))); + } + + if (Arch::s390() && IsAvailable("xpram")) { // menu entry text configs = add(configs, `item(`id(`xpram), `icon("yast-xpram"), _("Configure &XPRAM..."))); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-storage-2.22.0/storage/src/include/ep-btrfs-dialogs.ycp new/yast2-storage-2.22.1/storage/src/include/ep-btrfs-dialogs.ycp --- old/yast2-storage-2.22.0/storage/src/include/ep-btrfs-dialogs.ycp 2011-11-18 15:20:06.000000000 +0100 +++ new/yast2-storage-2.22.1/storage/src/include/ep-btrfs-dialogs.ycp 2012-01-25 12:28:28.000000000 +0100 @@ -69,7 +69,7 @@ y2milestone( "GetPossibleVols parts:%1", devmap["partitions"]:[] ); list<map> parts = filter( map part, devmap["partitions"]:[], - ``( size(part["mount"]:"")==0 && + ``( (size(part["mount"]:"")==0 || part["used_by_type"]:`UB_NONE==`UB_BTRFS) && !contains( types_no, part["type"]:`primary ) && contains(allowed_enc_types, part["enc_type"]:`none) && (!Storage::IsUsedBy(part) || part["used_by_type"]:`UB_NONE==`UB_BTRFS) && @@ -131,14 +131,14 @@ { y2milestone("MiniWorkflowStepResizeVolume data:%1", data); - string vgname = data["name"]:"error"; list<string> pvs_new = []; list<symbol> fields = StorageSettings::FilterTable([ `device, `udev_path, `udev_id, `size, `encrypted, `type ]); - map<string, map> target_map = Storage::GetTargetMap(); - list<map> unused_pvs = filter(map pv, GetPossibleVols(target_map), { return !Storage::IsUsedBy(pv); }); - list<map> used_pvs = filter(map pv, GetPossibleVols(target_map), { return pv["used_by_device"]:"" == data["uuid"]:""; }); + list<map> poss_pvs = GetPossibleVols(Storage::GetTargetMap()); + y2milestone( "MiniWorkflowStepResizeVolume poss:%1", maplist( map pv, poss_pvs, ``( [ pv["device"]:"", pv["used_by_device"]:"" ]))); + list<map> unused_pvs = filter(map pv, poss_pvs, ``(pv["used_by_type"]:`UB_NONE==`UB_NONE)); + list<map> used_pvs = filter(map pv, poss_pvs, ``(pv["used_by_device"]:""==data["uuid"]:"")); term contents = `VBox(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-storage-2.22.0/storage/src/include/ep-dialogs.ycp new/yast2-storage-2.22.1/storage/src/include/ep-dialogs.ycp --- old/yast2-storage-2.22.0/storage/src/include/ep-dialogs.ycp 2011-11-18 15:20:06.000000000 +0100 +++ new/yast2-storage-2.22.1/storage/src/include/ep-dialogs.ycp 2012-03-13 16:45:06.000000000 +0100 @@ -637,6 +637,7 @@ map<string, boolean> possible = Storage::IsResizable(data); + y2milestone( "DlgResize data: %1", data ); if (!data["format"]:false && !possible["shrink"]:false && !possible["extend"]:false) { // popup text @@ -770,6 +771,7 @@ UI::ChangeWidget(`id(`custom_size_input), `Value, Storage::KByteToHumanString(size_k)); symbol widget = nil; + boolean asked_big_resize = false; integer old_size_k = size_k; @@ -836,7 +838,8 @@ boolean lvm = data["type"]:`unknown == `lvm; //1 - ask & be interactive, 2 - we are on lvm, 3 - cyl.diff, 4 - filesystem, 5 - mountpoint - if (!CheckResizePossible(false, lvm, size_k - old_size_k, used_fs, mountpoint)) + if (!data["format"]:false && + !CheckResizePossible(false, lvm, size_k - old_size_k, used_fs, mountpoint)) { //FIXME: To check whether the part. can be resized only //after user tries to do that is stupid - in some cases @@ -847,6 +850,25 @@ continue; } + if (!data["format"]:false && size(mountpoint)>0 && + contains( [`ext2, `ext3, `ext4], used_fs ) && + !asked_big_resize && size_k-old_size_k >= 1024*1024*50 ) + { + asked_big_resize = true; + string txt = sformat( +_("You are extending a mounted filesystem by %1 Gigabyte. +This may be quite slow and can take hours. You might possibly want +to consider umounting the filesystem, which will increase speed of +resize task a lot."), (size_k-old_size_k)/(1024*1024) ); + boolean answ = Popup::YesNo( txt ); + y2milestone("ResizeDlg big_resize_while_mounted ret:%1", answ ); + if( answ ) + { + widget = `again; + continue; + } + } + switch (data["type"]:`unknown) { case `primary: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-storage-2.22.0/storage/src/include/ep-hd-lib.ycp new/yast2-storage-2.22.1/storage/src/include/ep-hd-lib.ycp --- old/yast2-storage-2.22.0/storage/src/include/ep-hd-lib.ycp 2011-12-06 11:13:31.000000000 +0100 +++ new/yast2-storage-2.22.1/storage/src/include/ep-hd-lib.ycp 2011-12-21 12:41:55.000000000 +0100 @@ -32,8 +32,12 @@ string default_label = Storage::DefaultDiskLabel(disk_device); list<string> labels = [ default_label ]; - if (!contains(labels, "gpt")) - labels = add(labels, "gpt"); + + if (default_label != "dasd") + { + if (!contains(labels, "gpt")) + labels = add(labels, "gpt"); + } string label = default_label; if (size(labels) > 1) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-storage-2.22.0/storage/src/include/ep-hd.ycp new/yast2-storage-2.22.1/storage/src/include/ep-hd.ycp --- old/yast2-storage-2.22.0/storage/src/include/ep-hd.ycp 2011-11-18 15:20:06.000000000 +0100 +++ new/yast2-storage-2.22.1/storage/src/include/ep-hd.ycp 2012-02-20 13:54:46.000000000 +0100 @@ -325,13 +325,10 @@ list<term> expert_cmds = []; - if (!String::StartsWith(device, "/dev/dasd")) - { - expert_cmds = add(expert_cmds, - `item(`id(`create_partition_table), - // menu entry text - _("Create New Partition Table"))); - } + expert_cmds = add(expert_cmds, + `item(`id(`create_partition_table), + // menu entry text + _("Create New Partition Table"))); expert_cmds = add(expert_cmds, `item(`id(`clone_disk), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-storage-2.22.0/storage/src/inst_disk_proposal.ycp new/yast2-storage-2.22.1/storage/src/inst_disk_proposal.ycp --- old/yast2-storage-2.22.0/storage/src/inst_disk_proposal.ycp 2011-11-18 15:20:06.000000000 +0100 +++ new/yast2-storage-2.22.1/storage/src/inst_disk_proposal.ycp 2012-01-19 11:51:05.000000000 +0100 @@ -211,29 +211,24 @@ term bframe = `VBox( `PushButton( `id(`detailed), detailed_str ), - `VSpacing(0.45), + `VSpacing(0.2), `PushButton( `id(`import), import_str ), - `VSpacing(0.45), + `VSpacing(0.2), `PushButton( `id(`modify), modify_str ) ); float space = StorageProposal::SaveHeight()?1:2; term contents = - `VBox( - `VSpacing(0.5), - `HBox( - `HSpacing(2), + `MarginBox(2, 0.4, `VBox( `MinHeight(8, `RichText(`id(`richtext), changes)), rframe, `VSpacing(space), bframe, `VStretch() - ), - `HSpacing(2) - ), - `VSpacing(2) ); + ) + ); // help on suggested partitioning diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-storage-2.22.0/storage/src/modules/Storage.ycp new/yast2-storage-2.22.1/storage/src/modules/Storage.ycp --- old/yast2-storage-2.22.0/storage/src/modules/Storage.ycp 2011-12-06 17:17:39.000000000 +0100 +++ new/yast2-storage-2.22.1/storage/src/modules/Storage.ycp 2012-03-05 11:34:40.000000000 +0100 @@ -19,7 +19,7 @@ * wurde versucht "intelligent" zu gestallten und ist im einzelen bei den * entspechenden Funktionen n�her erkl�rt. * - * $Id: Storage.ycp 67000 2011-12-06 16:17:38Z aschnell $ + * $Id: Storage.ycp 67561 2012-03-05 10:34:35Z aschnell $ */ { module "Storage"; @@ -371,6 +371,11 @@ { LibStorage::StorageInterface::setDetectMountedVolumes(sint, false); LibStorage::StorageInterface::setRootPrefix(sint, Installation::destdir); + + if (Mode::autoinst() || Mode::autoupgrade()) + { + LibStorage::StorageInterface::setMultipathAutostart(sint, LibStorage::MPAS_OFF()); + } } conts = getContainers(); @@ -397,7 +402,11 @@ { integer bytes = 0; if (!LibStorage::humanStringToByte(str, true, bytes)) - y2error("cannot parse %1", str); + { + string ts = str+"b"; + if( !LibStorage::humanStringToByte(ts, true, bytes)) + y2error("cannot parse %1 or %2", str, ts); + } return bytes; } @@ -1975,9 +1984,18 @@ else { tg[dev] = getContainerInfo(c); - if( dev=="/dev/btrfs" ) - tg = HandleBtrfsSimpleVolumes( tg ); } + integer numbt = size(filter( map p, tg[dev,"partitions"]:[], ``(p["used_fs"]:`unknown==`btrfs ))); + y2milestone( "UpdateTargetMapDisk btrfs:%1", numbt ); + if( numbt>0 && dev!="/dev/btrfs" ) + { + map bt = tg["/dev/btrfs"]:$[]; + if( size(bt)==0 ) + bt["type"] = `CT_BTRFS; + tg["/dev/btrfs"] = getContainerInfo(bt); + } + if( numbt>0 || dev=="/dev/btrfs" ) + tg = HandleBtrfsSimpleVolumes( tg ); StorageMap[targets_key] = tg; //SCR::Write(.target.ycp, "/tmp/upd_disk_aft_"+sformat("%1",count), StorageMap[targets_key]:$[] ); //count = count+1; @@ -1991,6 +2009,8 @@ string cdev=""; map mdev = GetPartition( tg, dev ); y2milestone( "UpdateTargetMapDev mdev %1", mdev ); + boolean btrfs = mdev["used_fs"]:`unknown == `btrfs; + y2milestone( "UpdateTargetMapDev btrfs %1", btrfs ); foreach( string key, map d, tg, ``{ if( size(cdev)==0 && @@ -2031,7 +2051,9 @@ else y2error( "UpdateTargetMapDev key %1 not found in target", disk["device"]:"" ); y2milestone( "UpdateTargetMapDev mdev %1", mdev ); - if( mdev["used_fs"]:`unknown == `btrfs ) + btrfs = btrfs || mdev["used_fs"]:`unknown == `btrfs; + y2milestone( "UpdateTargetMapDev btrfs %1", btrfs ); + if( btrfs ) { map bt = tg["/dev/btrfs"]:$[]; if( size(bt)==0 ) @@ -2541,6 +2563,8 @@ return( ret ); } +global symbol GetMountBy( string device ); + global boolean ChangeVolumeProperties( map part ) { integer ret = 0; @@ -2593,8 +2617,9 @@ else y2milestone( "ChangeVolumeProperties sint ret:%1", ret ); } + symbol defmb = GetMountBy( dev ); if( ret==0 && size(part["mount"]:"")>0 && - part["mountby"]:`id != curr["mountby"]:`id ) + part["mountby"]:defmb != curr["mountby"]:defmb ) { changed = true; tmp = fromSymbol(conv_mountby,part["mountby"]:`device); @@ -3250,8 +3275,6 @@ } -global symbol GetMountBy( string device ); - /** * Set the flag if a disk needs to be initialized * @param string the disk to be changed @@ -3295,11 +3318,16 @@ boolean ret = true; if( IsPartType(ctype) ) { + symbol mby = GetMountBy( p["device"]:"" ); + if( p["used_fs"]:`unknown == `btrfs ) + mby = `uuid; ret = Storage::CreatePartition( d["device"]:"", p["device"]:"", p["type"]:`primary, p["fsid"]:Partitions::fsid_native, p["region",0]:0, p["region",1]:0, - p["mountby"]:GetMountBy( p["device"]:"" ) ); + p["mountby"]:mby ); + if( !haskey( p, "mountby" ) && mby!=`device ) + p["mountby"] = mby; } else if( ctype == `CT_MD ) { @@ -3565,12 +3593,12 @@ return false; } - string allowed_chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ#* ,.;:._-+!$%&/|\?{[()]}@^\\<>"; + string allowed_chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ#* ,.;:._-+=!$%&/|\?{[()]}@^\\<>"; if (findfirstnotof(pw1, allowed_chars) != nil) { // popup text Popup::Message(_("The password may only contain the following characters: -0..9, a..z, A..Z, and any of \"@#* ,.;:._-+!$%&/|\?{[()]}^\\<>\". +0..9, a..z, A..Z, and any of \"@#* ,.;:._-+=!$%&/|\?{[()]}^\\<>\". Try again.")); return false; } @@ -4626,6 +4654,7 @@ if (ret != save_chtxt) { + LibStorage::StorageInterface::dumpObjectList(sint); LibStorage::StorageInterface::dumpCommitInfos(sint); } @@ -5325,20 +5354,6 @@ Storage::AddFstabEntry( FileSystems::GetFstabDefaultMap( "usb" ) ); Storage::AddFstabEntry( FileSystems::GetFstabDefaultMap( "pts" ) ); - map m = $[]; - integer num = 0; - - foreach( string tdevice, any tdata, StorageDevices::ZipDrives(), - ``{ - m = FileSystems::GetFstabDefaultMap( "zip" ); - string zfile = "/zip"; - if( num > 0 ) - zfile = zfile + sformat( "%1", num ); - m["mount"] = "/media"+zfile; - m["spec"] = tdevice+"4"; - Storage::AddFstabEntry( m ); - num = num+1; - }); HandleModulesOnBoot( GetTargetMap() ); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-storage-2.22.0/storage/src/modules/StorageProposal.ycp new/yast2-storage-2.22.1/storage/src/modules/StorageProposal.ycp --- old/yast2-storage-2.22.0/storage/src/modules/StorageProposal.ycp 2011-11-18 15:20:06.000000000 +0100 +++ new/yast2-storage-2.22.1/storage/src/modules/StorageProposal.ycp 2012-01-10 10:01:00.000000000 +0100 @@ -413,6 +413,14 @@ map<string, boolean> swapable = $[]; map<string, boolean> ishome = $[]; +void fill_ishome( list<map> pl ) + { + foreach( map p, pl, + ``{ + if( !haskey( ishome, p["device"]:"" )) + ishome[p["device"]:""] = Storage::DetectHomeFs(p); + }); + } global void flex_init_swapable(map<string, map> tg) { @@ -1517,20 +1525,20 @@ llg["gap",gindex,"cylinders"]:0 - part["cylinders"]:0; } list addl = [ pindex ]; - if( e["extended"]:false && !part["primary"]:false ) + if( e["exists"]:false ) + { + addl = add( addl, e["nr"]:0 ); + } + else if( e["extended"]:false && !part["primary"]:false ) { addl = add( addl, llg["ext_pnr",0]:5 ); llg["ext_pnr"] = remove( llg["ext_pnr"]:[0], 0 ); } - else if( !e["exists"]:false ) + else { addl = add( addl, llg["free_pnr",0]:1 ); llg["free_pnr"] = remove( llg["free_pnr"]:[0], 0 ); } - else - { - addl = add( addl, e["nr"]:0 ); - } llg["gap",gindex,"added"] = add( llg["gap",gindex,"added"]:[], addl ); if( pindex+1 < size(ps) ) @@ -2614,13 +2622,13 @@ return( ret ); } -list<map> can_mp_reuse( string mp, integer min, integer max, - list<map> partitions ) +list<map> can_home_reuse( integer min, integer max, + list<map> partitions ) { list<map> ret = []; if( max>0 ) max = max + max/10; - y2milestone( "can_mp_reuse mp %1 min %2 max %3", mp, min, max ); + y2milestone( "can_home_reuse min %1 max %2", min, max ); list<map> pl = []; pl = filter( map p, partitions, ``(!p["delete"]:false && @@ -2631,23 +2639,79 @@ p["size_k"]:0/1024 >= min && (max==0 || p["size_k"]:0/1024 <= max) && Storage::CanEdit( p, false ))); - y2milestone( "can_mp_reuse normal %1", pl ); + y2milestone( "can_home_reuse normal %1", pl ); if( size(pl)>0 ) { pl = sort( map a, map b, pl, ``(a["size_k"]:0>b["size_k"]:0)); - y2milestone( "can_mp_reuse sorted %1", pl ); + fill_ishome( pl ); + pl = (list<map>) union( + filter( map p, pl, ``(ishome[p["device"]:""]:false) ), + filter( map p, pl, ``(!ishome[p["device"]:""]:false) )); + y2milestone( "can_home_reuse sorted %1", pl ); + ret = maplist( map p, partitions, + ``{ + if( !p["delete"]:false && + p["device"]:""==pl[0,"device"]:"" ) + { + p = Storage::SetVolOptions( p, "/home", PropDefaultFs(), + "", "", "" ); + } + return( p ); + }); + } + y2milestone( "can_home_reuse ret %1", ret ); + return( ret ); + } + +list<map> can_root_reuse( integer min, integer max, + list<map> partitions ) + { + list<map> ret = []; + if( max>0 ) + max = max + max/10; + y2milestone( "can_root_reuse min %1 max %2", min, max ); + list<map> pl = []; + pl = filter( map p, partitions, + ``(!p["delete"]:false && + p["fsid"]:Partitions::fsid_native == + Partitions::fsid_native && + !Storage::IsUsedBy(p) && + size(p["mount"]:"")==0 && + p["size_k"]:0/1024 >= min && + Storage::CanEdit( p, false ))); + y2milestone( "can_root_reuse normal %1", pl ); + if( size(pl)>0 ) + { + fill_ishome( pl ); + list<map> p1 = sort( map a, map b, + filter( map p, pl, ``(ishome[p["device"]:""]:false)), + ``(a["size_k"]:0<b["size_k"]:0)); + y2milestone( "can_root_reuse p1 %1", p1 ); + list<map> p2 = sort( map a, map b, + filter( map p, pl, + ``(!ishome[p["device"]:""]:false&&p["size_k"]:0/1024>max)), + ``(a["size_k"]:0<b["size_k"]:0)); + y2milestone( "can_root_reuse p2 %1", p2 ); + list<map> p3 = sort( map a, map b, + filter( map p, pl, + ``(!ishome[p["device"]:""]:false&&p["size_k"]:0/1024<=max)), + ``(a["size_k"]:0>b["size_k"]:0)); + y2milestone( "can_root_reuse p3 %1", p3 ); + pl = (list<map>) union( p2, p1 ); + pl = (list<map>) union( p3, pl ); + y2milestone( "can_root_reuse sorted %1", pl ); ret = maplist( map p, partitions, ``{ if( !p["delete"]:false && p["device"]:""==pl[0,"device"]:"" ) { - p = Storage::SetVolOptions( p, mp, PropDefaultFs(), + p = Storage::SetVolOptions( p, "/", PropDefaultFs(), "", "", "" ); } return( p ); }); } - y2milestone( "can_mp_reuse ret %1", ret ); + y2milestone( "can_root_reuse ret %1", ret ); return( ret ); } @@ -2916,11 +2980,7 @@ Storage::CanDelete( p, disk, false ))); if( size(pl)>0 ) { - foreach( map p, pl, - ``{ - if( !haskey( ishome, p["device"]:"" )) - ishome[p["device"]:""] = Storage::DetectHomeFs(p); - }); + fill_ishome( pl ); pl = sort( map a, map b, pl, ``(a["size_k"]:0>b["size_k"]:0)); list<map> l1 = filter( map p, pl, ``(!Storage::IsUsedBy(p)) ); @@ -3197,28 +3257,24 @@ if( mode == `reuse ) { list<map> parts = disk["partitions"]:[]; - if( GetProposalHome() ) - { - if( avail_size > opts["home_limit"]:0 ) - parts = can_mp_reuse( "/home", 4*1024, 0, parts ); - else - parts = can_mp_reuse( "/", opts["root_base"]:0, 0, - parts ); - } - if( size(parts)>0 && avail_size > opts["home_limit"]:0 ) + list<map> tmp = []; + if( GetProposalHome() && avail_size>opts["home_limit"]:0 ) { - integer mx = 0; - if( GetProposalHome() ) - mx = opts["root_max"]:0; - parts = can_mp_reuse( "/", opts["root_base"]:0, - mx, parts ); + tmp = can_home_reuse( 4*1024, 0, parts ); + if( size(tmp)>0 ) + { + have_home = true; + parts = tmp; + } } - if( size(parts)>0 ) + tmp = can_root_reuse( opts["root_base"]:0, + opts["root_max"]:0, parts ); + if( size(tmp)>0 ) { - have_home = avail_size > opts["home_limit"]:0; have_root = true; - disk["partitions"] = parts; + parts = tmp; } + disk["partitions"] = parts; y2milestone( "get_inst_proposal reuse have_home %1 have_root %2", have_home, have_root ); if( have_home && have_root ) -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
