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]

Reply via email to