Hello community,

here is the log from the commit of package libstorage for openSUSE:Factory 
checked in at 2014-02-26 23:20:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libstorage (Old)
 and      /work/SRC/openSUSE:Factory/.libstorage.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libstorage"

Changes:
--------
--- /work/SRC/openSUSE:Factory/libstorage/libstorage.changes    2014-02-23 
07:16:26.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.libstorage.new/libstorage.changes       
2014-02-26 23:20:29.000000000 +0100
@@ -1,0 +2,6 @@
+Mon Feb 24 14:31:45 CET 2014 - [email protected]
+
+- use parted for ECKD DASDs (fate#313075)
+- 2.25.9
+
+-------------------------------------------------------------------

Old:
----
  libstorage-2.25.8.tar.bz2

New:
----
  libstorage-2.25.9.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libstorage.spec ++++++
--- /var/tmp/diff_new_pack.pTW79I/_old  2014-02-26 23:20:30.000000000 +0100
+++ /var/tmp/diff_new_pack.pTW79I/_new  2014-02-26 23:20:30.000000000 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           libstorage
-Version:        2.25.8
+Version:        2.25.9
 Release:        0
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 Source:         libstorage-%{version}.tar.bz2

++++++ libstorage-2.25.8.tar.bz2 -> libstorage-2.25.9.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-2.25.8/VERSION 
new/libstorage-2.25.9/VERSION
--- old/libstorage-2.25.8/VERSION       2014-02-21 11:40:44.000000000 +0100
+++ new/libstorage-2.25.9/VERSION       2014-02-24 14:59:33.000000000 +0100
@@ -1 +1 @@
-2.25.8
+2.25.9
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-2.25.8/bindings/python/libstorage.py 
new/libstorage-2.25.9/bindings/python/libstorage.py
--- old/libstorage-2.25.8/bindings/python/libstorage.py 2014-02-21 
17:35:45.000000000 +0100
+++ new/libstorage-2.25.9/bindings/python/libstorage.py 2014-02-24 
15:01:14.000000000 +0100
@@ -1453,7 +1453,6 @@
 DM_REMOVE_FAILED = _libstorage.DM_REMOVE_FAILED
 DM_NOT_IN_LIST = _libstorage.DM_NOT_IN_LIST
 DASD_NOT_POSSIBLE = _libstorage.DASD_NOT_POSSIBLE
-DASD_FDASD_FAILED = _libstorage.DASD_FDASD_FAILED
 DASD_DASDFMT_FAILED = _libstorage.DASD_DASDFMT_FAILED
 DMPART_CHANGE_READONLY = _libstorage.DMPART_CHANGE_READONLY
 DMPART_INTERNAL_ERR = _libstorage.DMPART_INTERNAL_ERR
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-2.25.8/storage/AppUtil.cc 
new/libstorage-2.25.9/storage/AppUtil.cc
--- old/libstorage-2.25.8/storage/AppUtil.cc    2014-02-07 18:08:42.000000000 
+0100
+++ new/libstorage-2.25.9/storage/AppUtil.cc    2014-02-24 14:59:33.000000000 
+0100
@@ -712,7 +712,7 @@
     void
     checkBinPaths(const string& arch, bool instsys)
     {
-       y2mil("Arch:" << arch << " Instsys:" << instsys);
+       y2mil("arch:" << arch << " instsys:" << instsys);
 
        set<string> paths = {
 #include "./gen_pathlist.cc"
@@ -723,7 +723,6 @@
 
        if (!boost::starts_with(arch, "s390"))
        {
-           paths.erase(FDASDBIN);
            paths.erase(DASDVIEWBIN);
            paths.erase(DASDFMTBIN);
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-2.25.8/storage/Dasd.cc 
new/libstorage-2.25.9/storage/Dasd.cc
--- old/libstorage-2.25.8/storage/Dasd.cc       2014-01-22 10:39:57.000000000 
+0100
+++ new/libstorage-2.25.9/storage/Dasd.cc       2014-02-24 14:59:33.000000000 
+0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) [2004-2010] Novell, Inc.
+ * Copyright (c) [2004-2014] Novell, Inc.
  *
  * All Rights Reserved.
  *
@@ -64,324 +64,141 @@
 
 
     bool
-    Dasd::detectPartitionsFdasd(SystemInfo& systeminfo)
-    {
-    bool ret = true;
-       checkFdasdOutput(systeminfo);
-    y2mil("ret:" << ret << " partitions:" << vols.size());
-    return( ret );
-    }
-
-
-    bool
     Dasd::detectPartitions(SystemInfo& systeminfo)
     {
-    bool ret = true;
-
-    detected_label = "dasd";
-    setLabelData( "dasd" );
+       bool ret = true;
 
        const Dasdview& dasdview = systeminfo.getDasdview(device());
        new_geometry = geometry = dasdview.getGeometry();
        fmt = dasdview.getDasdFormat();
        ronly = fmt != DASDF_CDL;
 
-       if( size_k==0 )
-           {
+       if (size_k == 0)
+       {
            size_k = geometry.sizeK();
            y2mil("New SizeK:" << size_k);
-           }
+       }
+
+       switch (fmt)
+       {
+           case DASDF_NONE:
+               break;
 
-       switch( fmt )
-           {
            case DASDF_CDL:
-               ret = Dasd::detectPartitionsFdasd(systeminfo);
+               ret = Disk::detectPartitions(systeminfo);
                break;
-           case DASDF_LDL:
-               {
+
+           case DASDF_LDL: {
                max_primary = 1;
                unsigned long long s = cylinderToKb(cylinders());
                Partition *p = new Partition(*this, getPartName(1), 
getPartDevice(1), 1,
                                             systeminfo, s, Region(0, 
cylinders()), PRIMARY);
                const ProcParts& parts = systeminfo.getProcParts();
                if (parts.getSize(p->device(), s))
-                   {
-                   p->setSize( s );
-                   }
-               addToList( p );
-               ret = true;
-               }
-               break;
-           default:
-               break;
-           }
-
-    y2mil("ret:" << ret << " partitions:" << vols.size() << " detected label:" 
<< label);
-    y2mil("geometry:" << geometry << " fmt:" << toString(fmt) << " readonly:" 
<< ronly);
-    return ret;
-    }
-
-
-    bool
-    Dasd::checkPartitionsValid(SystemInfo& systeminfo, const list<Partition*>& 
pl) const
-    {
-       const ProcParts& parts = systeminfo.getProcParts();
-       const Fdasd& fdasd = systeminfo.getFdasd(dev);
-
-       list<string> ps = partitionsKernelKnowns(parts);
-       if (pl.size() != ps.size())
-       {
-           y2err("number of partitions fdasd and kernel see differs");
-           return false;
-       }
-
-       for (list<Partition*>::const_iterator i = pl.begin(); i != pl.end(); 
++i)
-       {
-           const Partition& p = **i;
-
-           Fdasd::Entry entry;
-           if (fdasd.getEntry(p.nr(), entry))
-           {
-               // maybe too strict but should be ok
-
-               Region head_fdasd = entry.headRegion;
-               Region head_kernel = p.detectSysfsBlkRegion() / 
(geometry.headSize() / 512);
-
-               if (head_fdasd != head_kernel)
                {
-                   y2err("region mismatch dev:" << dev << " nr:" << p.nr() << 
" head_fdasd:" <<
-                         head_fdasd << " head_kernel:" << head_kernel);
-                   return false;
+                   p->setSize(s);
                }
-           }
+               addToList(p);
+               ret = true;
+           } break;
        }
 
-       return true;
+       y2mil("ret:" << ret << " partitions:" << vols.size() << " detected 
label:" << label);
+       y2mil("geometry:" << geometry << " fmt:" << toString(fmt) << " 
readonly:" << ronly);
+
+       return ret;
     }
 
 
-bool
-    Dasd::checkFdasdOutput(SystemInfo& systeminfo)
+    int
+    Dasd::doResize(Volume* v)
     {
-       const ProcParts& parts = systeminfo.getProcParts();
-       const Fdasd& fdasd = systeminfo.getFdasd(dev);
-
-       assert(geometry == fdasd.getGeometry());
-
-    list<Partition *> pl;
-
-       for (Fdasd::const_iterator it = fdasd.getEntries().begin();
-            it != fdasd.getEntries().end(); ++it)
-       {
-           if( it->num < range )
-                   {
-                   unsigned long long s = cylinderToKb(it->cylRegion.len());
-                   Partition *p = new Partition(*this, getPartName(it->num), 
getPartDevice(it->num),
-                                                it->num, systeminfo, s, 
it->cylRegion, PRIMARY);
-                   if (parts.getSize(p->device(), s))
-                       {
-                       p->setSize( s );
-                       }
-                   pl.push_back( p );
-                   }
-               else
-                   y2war("partition nr " << it->num << " outside range " << 
range);
-       }
-
-    y2mil("nm:" << nm);
-    unsigned long dummy = 0;
-    if (!checkPartedValid(systeminfo, pl, dummy))
-       {
-       Text txt = sformat(
-       // popup text %1$s is replaced by disk name e.g. /dev/hda
-_("The partitioning on disk %1$s is not readable by\n"
-"the partitioning tool fdasd, which is used to change the\n"
-"partition table.\n"
-"\n"
-"You can use the partitions on disk %1$s as they are.\n"
-"You can format them and assign mount points to them, but you\n"
-"cannot add, edit, resize, or remove partitions from that\n"
-"disk with this tool."), dev.c_str() );
-
-       getStorage()->addInfoPopupText( dev, txt );
-       ronly = true;
-       }
-    for( list<Partition*>::iterator i=pl.begin(); i!=pl.end(); ++i )
-       {
-       addToList( *i );
-       }
-    return( true );
+       return DASD_NOT_POSSIBLE;
     }
 
 
-int Dasd::doResize( Volume* v ) 
-    { 
-    return DASD_NOT_POSSIBLE;
+    int
+    Dasd::resizePartition(Partition* p, unsigned long newCyl)
+    {
+       return DASD_NOT_POSSIBLE;
     }
 
-int Dasd::resizePartition( Partition* p, unsigned long newCyl )
-    { 
-    return DASD_NOT_POSSIBLE;
-    }
 
-int Dasd::removePartition( unsigned nr )
+    int
+    Dasd::removePartition(unsigned nr)
     {
-    y2mil("begin nr:" << nr);
-    int ret = Disk::removePartition( nr );
-    if( ret==0 )
+       y2mil("begin nr:" << nr);
+       int ret = Disk::removePartition(nr);
+       if (ret == 0)
        {
-       PartPair p = partPair(Partition::notDeleted);
-       changeNumbers( p.begin(), p.end(), nr, -1 );
+           PartPair p = partPair(Partition::notDeleted);
+           changeNumbers(p.begin(), p.end(), nr, -1);
        }
-    y2mil("ret:" << ret);
-    return( ret );
+       y2mil("ret:" << ret);
+       return ret;
     }
 
-int Dasd::createPartition( PartitionType type, unsigned long start,
-                           unsigned long len, string& device,
-                          bool checkRelaxed )
-    {
-    y2mil("begin type:" << toString(type) << " start:" << start << " len:" << 
len << " relaxed:"
-         << checkRelaxed);
-    int ret = createChecks(type, Region(start, len), checkRelaxed);
-    int number = 0;
-    if( ret==0 )
-       {
-       number = availablePartNumber( type );
-       if( number==0 )
-           {
-           ret = DISK_PARTITION_NO_FREE_NUMBER;
-           }
-       else
-           {
-           PartPair p = partPair(Partition::notDeleted);
-           number = 1;
-           PartIter i = p.begin();
-           while( i!=p.end() && i->cylStart()<start )
+
+    int
+    Dasd::createPartition(PartitionType type, unsigned long start, unsigned 
long len,
+                         string& device, bool checkRelaxed)
+    {
+       y2mil("begin type:" << toString(type) << " start:" << start << " len:" 
<<
+             len << " relaxed:" << checkRelaxed);
+       int ret = createChecks(type, Region(start, len), checkRelaxed);
+       int number = 0;
+       if (ret == 0)
+       {
+           number = availablePartNumber(type);
+           if (number == 0)
+           {
+               ret = DISK_PARTITION_NO_FREE_NUMBER;
+           }
+           else
+           {
+               PartPair p = partPair(Partition::notDeleted);
+               number = 1;
+               PartIter i = p.begin();
+               while (i!=p.end() && i->cylStart() < start)
                {
-               number++;
-               ++i;
+                   number++;
+                   ++i;
                }
-           y2mil("number:" << number);
-           changeNumbers( p.begin(), p.end(), number-1, 1 );
+               y2mil("number:" << number);
+               changeNumbers(p.begin(), p.end(), number - 1, 1);
            }
        }
-    if( ret==0 )
+       if (ret == 0)
        {
-       Partition * p = new Partition(*this, getPartName(number), 
getPartDevice(number), number,
-                                     cylinderToKb(len), Region(start, len), 
type);
-       p->setCreated();
-       device = p->device();
-       PartPair pp = partPair();
-       for( PartIter i = pp.begin(); i != pp.end(); ++i)
+           Partition * p = new Partition(*this, getPartName(number), 
getPartDevice(number), number,
+                                         cylinderToKb(len), Region(start, 
len), type);
+           p->setCreated();
+           device = p->device();
+           PartPair pp = partPair();
+           for (PartIter i = pp.begin(); i != pp.end(); ++i)
            {
-           if (i->deleted() && i->nr()==p->nr() && !i->getCryptPwd().empty())
+               if (i->deleted() && i->nr()==p->nr() && 
!i->getCryptPwd().empty())
                {
-               y2mil("harvesting old password");
-               p->setCryptPwd(i->getCryptPwd());
+                   y2mil("harvesting old password");
+                   p->setCryptPwd(i->getCryptPwd());
                }
            }
-       addToList( p );
-       }
-    y2mil("ret:" << ret);
-    return( ret );
-    }
-
-Text Dasd::fdasdText() const
-    {
-    Text txt;
-    // displayed text during action, %1$s is replaced by disk name (e.g. 
/dev/dasda),
-    txt = sformat( _("Executing fdasd for disk %1$s"), dev.c_str() );
-    return( txt );
-    }
-
-int Dasd::doFdasd()
-    {
-    int ret = 0;
-    getStorage()->showInfoCb( fdasdText(), silent );
-    PartPair p = partPair();
-    PartIter i = p.begin();
-    while( ret==0 && i!=p.end() )
-       {
-       if( i->deleted() )
-           {
-           getStorage()->removeDmMapsTo( getPartDevice(i->OrigNr()) );
-           i->prepareRemove();
-           }
-       ++i;
-       }
-    string inpname = getStorage()->tmpDir()+"/fdasd_inp";
-    ofstream inpfile( inpname.c_str() );
-    classic(inpfile);
-    p = partPair(Partition::notDeleted);
-    i = p.begin();
-    while( i!=p.end() )
-       {
-       string start = decString(i->cylStart() * new_geometry.heads);
-       string end  = decString((i->cylEnd() + 1) * new_geometry.heads - 1);
-       if( i->cylStart()==0 )
-           start = "first";
-       if( i->cylEnd()>=cylinders()-1 )
-           end = "last";
-       inpfile << "[" << start << "," << end << "]" << endl;
-       ++i;
-       }
-    inpfile.close();
-    SystemCmd cmd( "cat " + inpname );
-    string cmd_line = FDASDBIN " -c " + inpname + " " + quote(device());
-    if( execCheckFailed( cmd_line ) )
-       {
-       ret = DASD_FDASD_FAILED;
-       }
-    if( ret==0 )
-       {
-       ProcParts parts;
-       p = partPair();
-       i = p.begin();
-       list<Partition*> rem_list;
-       while( i!=p.end() )
-           {
-           if( i->deleted() )
-               {
-               rem_list.push_back( &(*i) );
-               }
-           if( i->created() )
-               {
-               unsigned long long s;
-               Storage::waitForDevice(i->device());
-               i->setCreated( false );
-               if (parts.getSize(i->device(), s))
-                   {
-                   i->setSize( s );
-                   }
-               ret = i->zeroIfNeeded(); 
-               }
-           ++i;
-           }
-       list<Partition*>::const_iterator pr = rem_list.begin();
-       while( pr != rem_list.end() )
-           {
-           if( !removeFromList( *pr ) && ret==0 )
-               ret = DISK_REMOVE_PARTITION_LIST_ERASE;
-           ++pr;
-           }
-       del_ptable = false;
+           addToList(p);
        }
-    unlink( inpname.c_str() );
-    y2mil("ret:" << ret);
-    return( ret );
+       y2mil("ret:" << ret);
+       return ret;
     }
 
 
-void
-Dasd::getCommitActions(list<commitAction>& l) const
+    void
+    Dasd::getCommitActions(list<commitAction>& l) const
     {
-    y2mil("begin:" << name() << " init_disk:" << init_disk);
-    Disk::getCommitActions( l );
-    if( init_disk )
+       y2mil("begin:" << name() << " init_disk:" << init_disk);
+       Disk::getCommitActions(l);
+       if (init_disk)
        {
-       l.remove_if(stage_is(DECREASE));
-       l.push_front(commitAction(DECREASE, staticType(), dasdfmtText(false), 
this, true));
+           l.remove_if(stage_is(DECREASE));
+           l.push_front(commitAction(DECREASE, staticType(), 
dasdfmtText(false), this, true));
        }
     }
 
@@ -417,152 +234,125 @@
     }
 
 
-void
-Dasd::getToCommit(CommitStage stage, list<const Container*>& col, list<const 
Volume*>& vol) const
-{
-    unsigned long oco = col.size();
-    unsigned long ovo = vol.size();
-    if( stage==DECREASE ) 
-       {
-       ConstVolPair p = volPair( stageDecrease );
-       if( !p.empty() )
-           vol.push_back( &(*(p.begin())) );
-       if( deleted() || init_disk )
-           col.push_back( this );
-       }
-    else if( stage==INCREASE )
-       {
-       ConstVolPair p = volPair(stageIncrease);
-       if( !p.empty() )
-           {
-           ConstVolIterator i = p.begin();
-           vol.push_back( &(*i) );
-           ++i;
-           while( i!=p.end() )
-               {
-               if( i->needExtend()||i->needCrsetup() )
-                   vol.push_back( &(*i) );
-               ++i;
-               }
-           }
-       }
-    else
-       Disk::getToCommit( stage, col, vol );
-    if( col.size()!=oco || vol.size()!=ovo )
-       y2mil("stage:" << stage << " col:" << col.size() << " vol:" << 
vol.size());
-}
-
-
-int Dasd::commitChanges( CommitStage stage )
+    int
+    Dasd::commitChanges(CommitStage stage)
     {
-    y2mil("name:" << name() << " stage:" << stage);
-    int ret = 0;
-    if( stage==DECREASE && init_disk )
+       y2mil("name:" << name() << " stage:" << stage);
+       int ret = 0;
+       if (stage == DECREASE && init_disk)
        {
-       ret = doDasdfmt();
+           ret = doDasdfmt();
        }
-    if( ret==0 )
+       if (ret == 0)
        {
-       ret = Disk::commitChanges( stage );
+           ret = Disk::commitChanges(stage);
        }
-    y2mil("ret:" << ret);
-    return( ret );
+       y2mil("ret:" << ret);
+       return ret;
     }
 
-static bool needDasdfmt( const Disk&d )
-    { 
-    bool ret = d.isDasd() && d.initializeDisk();
-    return( ret );
+
+    static bool
+    needDasdfmt(const Disk& d)
+    {
+       return d.isDasd() && d.initializeDisk();
     }
 
-int Dasd::doDasdfmt()
+
+    int
+    Dasd::doDasdfmt()
     {
-    int ret = 0;
-    y2mil("dasd:" << device());
-    list<Disk*> dl;
-    list<string> devs;
-    getStorage()->getDiskList( needDasdfmt, dl );
-    if( !dl.empty() )
+       y2mil("dasd:" << device());
+
+       int ret = 0;
+       list<Disk*> dl;
+       list<string> devs;
+       getStorage()->getDiskList(needDasdfmt, dl);
+       if (!dl.empty())
        {
-       for( list<Disk*>::const_iterator i = dl.begin(); i!=dl.end(); ++i )
+           for (list<Disk*>::const_iterator i = dl.begin(); i != dl.end(); ++i)
            {
-           devs.push_back( undevDevice((*i)->device()) );
+               devs.push_back(undevDevice((*i)->device()));
            }
-       y2mil("devs:" << devs);
-       getStorage()->showInfoCb( dasdfmtTexts(true, devs), silent );
-       for( list<string>::iterator i = devs.begin(); i!=devs.end(); ++i )
+           y2mil("devs:" << devs);
+           getStorage()->showInfoCb(dasdfmtTexts(true, devs), silent);
+           for (list<string>::iterator i = devs.begin(); i != devs.end(); ++i)
            {
-           *i = "-f " + quote(normalizeDevice(*i));
+               *i = "-f " + quote(normalizeDevice(*i));
            }
-       string cmd_line = DASDFMTBIN " -Y -P 4 -b 4096 -y -m 1 -d cdl " + 
boost::join(devs, " ");
-       y2mil("cmdline:" << cmd_line);
-       CallbackProgressBar cb = getStorage()->getCallbackProgressBarTheOne();
-       ProgressBar* progressbar = new DasdfmtProgressBar( cb );
-       SystemCmd cmd;
-       cmd.setOutputProcessor(progressbar);
-       if( execCheckFailed( cmd, cmd_line ) )
+           string cmd_line = DASDFMTBIN " -Y -P 4 -b 4096 -y -m 1 -d cdl " +
+               boost::join(devs, " ");
+           y2mil("cmdline:" << cmd_line);
+           CallbackProgressBar cb = 
getStorage()->getCallbackProgressBarTheOne();
+           ProgressBar* progressbar = new DasdfmtProgressBar(cb);
+           SystemCmd cmd;
+           cmd.setOutputProcessor(progressbar);
+           if (execCheckFailed(cmd, cmd_line))
            {
-           ret = DASD_DASDFMT_FAILED;
+               ret = DASD_DASDFMT_FAILED;
            }
-       if( ret==0 )
+           if (ret == 0)
            {
-           SystemInfo systeminfo;
-           for( list<Disk*>::iterator i = dl.begin(); i!=dl.end(); ++i )
+               SystemInfo systeminfo;
+               for (list<Disk*>::iterator i = dl.begin(); i!=dl.end(); ++i)
                {
-               Dasd * ds = static_cast<Dasd *>(*i);
-               ds->detectPartitions(systeminfo);
-               ds->resetInitDisk();
-               ds->removeFromMemory();
+                   Dasd * ds = static_cast<Dasd *>(*i);
+                   ds->detectPartitions(systeminfo);
+                   ds->resetInitDisk();
+                   ds->removeFromMemory();
                }
            }
-       delete progressbar;
+           delete progressbar;
        }
-    return( ret );
+
+       return ret;
     }
 
-int Dasd::initializeDisk( bool value )
+
+    int
+    Dasd::initializeDisk(bool value)
     {
-    y2mil("value:" << value << " old:" << init_disk);
-    int ret = 0;
-    if( init_disk != value )
-       {
-       init_disk = value;
-       if( init_disk )
-           {
-           new_geometry.heads = geometry.heads = 15;
-           new_geometry.sectors = geometry.sectors = 12;
-           y2mil("new geometry:" << geometry);
-           size_k = geometry.sizeK();
-           y2mil("new SizeK:" << size_k);
-           ret = destroyPartitionTable( "dasd" );
-           }
-       else
-           {
-           PartPair p = partPair();
-           PartIter i = p.begin();
-           list<Partition*> rem_list;
-           while( i!=p.end() )
+       y2mil("value:" << value << " old:" << init_disk);
+       int ret = 0;
+       if (init_disk != value)
+       {
+           init_disk = value;
+           if (init_disk)
+           {
+               new_geometry.heads = geometry.heads = 15;
+               new_geometry.sectors = geometry.sectors = 12;
+               y2mil("new geometry:" << geometry);
+               size_k = geometry.sizeK();
+               y2mil("new SizeK:" << size_k);
+               ret = destroyPartitionTable("dasd");
+           }
+           else
+           {
+               PartPair p = partPair();
+               PartIter i = p.begin();
+               list<Partition*> rem_list;
+               while (i != p.end())
                {
-               if( i->deleted() )
+                   if (i->deleted())
                    {
-                   i->setDeleted(false);
+                       i->setDeleted(false);
                    }
-               if( i->created() )
+                   if (i->created())
                    {
-                   rem_list.push_back( &(*i) );
+                       rem_list.push_back(&(*i));
                    }
-               ++i;
+                   ++i;
                }
-           list<Partition*>::const_iterator pr = rem_list.begin();
-           while( pr != rem_list.end() )
+               list<Partition*>::const_iterator pr = rem_list.begin();
+               while (pr != rem_list.end())
                {
-               if( !removeFromList( *pr ) && ret==0 )
-                   ret = DISK_REMOVE_PARTITION_LIST_ERASE;
-               ++pr;
+                   if (!removeFromList(*pr) && ret == 0)
+                       ret = DISK_REMOVE_PARTITION_LIST_ERASE;
+                   ++pr;
                }
            }
        }
-    return( ret );
+       return ret;
     }
 
 
@@ -575,11 +365,11 @@
     }
 
 
-std::ostream& operator<< (std::ostream& s, const Dasd& d )
+    std::ostream& operator<< (std::ostream& s, const Dasd& d)
     {
-    s << dynamic_cast<const Disk&>(d);
-    s << " fmt:" << toString(d.fmt);
-    return s;
+       s << dynamic_cast<const Disk&>(d);
+       s << " fmt:" << toString(d.fmt);
+       return s;
     }
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-2.25.8/storage/Dasd.h 
new/libstorage-2.25.9/storage/Dasd.h
--- old/libstorage-2.25.8/storage/Dasd.h        2014-01-22 10:39:57.000000000 
+0100
+++ new/libstorage-2.25.9/storage/Dasd.h        2014-02-24 14:59:33.000000000 
+0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) [2004-2010] Novell, Inc.
+ * Copyright (c) [2004-2014] Novell, Inc.
  *
  * All Rights Reserved.
  *
@@ -34,9 +34,9 @@
     class ProcParts;
 
 
-class Dasd : public Disk
+    class Dasd : public Disk
     {
-    friend class Storage;
+       friend class Storage;
 
     public:
 
@@ -48,42 +48,32 @@
        Dasd(const Dasd& c);
        virtual ~Dasd();
 
-        int createPartition( storage::PartitionType type, long unsigned start,
-                            long unsigned len, string& device,
-                            bool checkRelaxed=false );
-        int removePartition( unsigned nr );
-        int changePartitionId( unsigned nr, unsigned id ) { return 0; }
-        int resizePartition( Partition* p, unsigned long newCyl );
-       int initializeDisk( bool value );
+        int createPartition(PartitionType type, long unsigned start,
+                           long unsigned len, string& device,
+                           bool checkRelaxed = false);
+        int removePartition(unsigned nr);
+        int changePartitionId(unsigned nr, unsigned id) { return 0; }
+       int resizePartition(Partition* p, unsigned long newCyl) override;
+       int initializeDisk(bool value);
        virtual string defaultLabel() const;
-       Text fdasdText() const;
-       Text dasdfmtText( bool doing ) const;
+       Text dasdfmtText(bool doing) const;
        static Text dasdfmtTexts(bool doing, const list<string>& devs);
        void getCommitActions(list<commitAction>& l) const;
-       void getToCommit(storage::CommitStage stage, list<const Container*>& 
col,
-                        list<const Volume*>& vol) const;
-       int commitChanges( storage::CommitStage stage );
+       int commitChanges(CommitStage stage);
 
     protected:
 
-       virtual void print( std::ostream& s ) const { s << *this; }
-       virtual Container* getCopy() const { return( new Dasd( *this ) ); }
-       bool detectPartitionsFdasd(SystemInfo& systeminfo);
+       virtual void print(std::ostream& s) const { s << *this; }
+       virtual Container* getCopy() const { return new Dasd(*this); }
        bool detectPartitions(SystemInfo& systeminfo);
-       virtual bool checkPartitionsValid(SystemInfo& systeminfo, const 
list<Partition*>& pl) const;
-       bool checkFdasdOutput(SystemInfo& systeminfo);
-       void redetectGeometry() {};
-        int doCreate( Volume* v ) { return(doFdasd()); }
-        int doRemove( Volume* v ) { return(init_disk?0:doFdasd()); }
-       int doFdasd();
-        int doResize( Volume* v );
-        int doSetType( Volume* v ) { return 0; }
-        int doCreateLabel() { return 0; }
+       void redetectGeometry() override {}
+       int doResize(Volume* v) override;
+        int doSetType(Volume* v) override { return 0; }
        int doDasdfmt();
 
        DasdFormat fmt;
 
-       friend std::ostream& operator<< (std::ostream&, const Dasd& );
+       friend std::ostream& operator<< (std::ostream&, const Dasd&);
 
     private:
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-2.25.8/storage/Dasdview.cc 
new/libstorage-2.25.9/storage/Dasdview.cc
--- old/libstorage-2.25.8/storage/Dasdview.cc   2014-02-03 10:49:03.000000000 
+0100
+++ new/libstorage-2.25.9/storage/Dasdview.cc   2014-02-24 14:59:33.000000000 
+0100
@@ -134,145 +134,4 @@
        return s;
     }
 
-
-    Fdasd::Fdasd(const string& device)
-    {
-       SystemCmd cmd(FDASDBIN " --table " + quote(device));
-
-       if (cmd.retcode() == 0)
-       {
-           scanGeometry(cmd);
-
-           Regex part("^" + Regex::escape(device) + "[0123456789]+$");
-           cmd.select( device );
-           int cnt = cmd.numLines();
-           for (int i = 0; i < cnt; ++i)
-           {
-               string line = cmd.getLine(i);
-               string tmp = extractNthWord( 0, line );
-               if( part.match(tmp) )
-               {
-                   scanEntryLine(line);
-               }
-           }
-       }
-       else
-       {
-           y2err("fdasd failed");
-       }
-
-       y2mil("device:" << device << " geometry:" << geometry);
-
-       for (const_iterator it = entries.begin(); it != entries.end(); ++it)
-           y2mil(*it);
-    }
-
-
-    bool
-    Fdasd::getEntry(unsigned num, Entry& entry) const
-    {
-       for (const_iterator it = entries.begin(); it != entries.end(); ++it)
-       {
-           if (it->num == num)
-           {
-               entry = *it;
-               return true;
-           }
-       }
-
-       return false;
-    }
-
-
-    std::ostream& operator<<(std::ostream& s, const Fdasd::Entry& e)
-    {
-       return s << "num:" << e.num << " cylRegion:" << e.cylRegion << " 
headRegion:"
-                << e.headRegion;
-    }
-
-
-    void
-    Fdasd::scanGeometry(SystemCmd& cmd)
-    {
-       if (cmd.select("cylinders") > 0)
-       {
-           string tmp = cmd.getLine(0, true);
-           y2mil("Cylinder line:" << tmp);
-           tmp = tmp.erase( 0, tmp.find( ':' ) + 1 );
-           tmp >> geometry.cylinders;
-       }
-
-       if (cmd.select("tracks per cylinder") > 0)
-       {
-           string tmp = cmd.getLine(0, true);
-           y2mil("Tracks line:" << tmp);
-           tmp = tmp.erase( 0, tmp.find( ':' ) + 1 );
-           tmp >> geometry.heads;
-       }
-
-       if (cmd.select("blocks per track") > 0)
-       {
-           string tmp = cmd.getLine(0, true);
-           y2mil("Blocks line:" << tmp);
-           tmp = tmp.erase( 0, tmp.find( ':' ) + 1 );
-           tmp >> geometry.sectors;
-       }
-
-       if (cmd.select("bytes per block") > 0)
-       {
-           string tmp = cmd.getLine(0, true);
-           y2mil("Bytes line:" << tmp);
-           tmp = tmp.erase( 0, tmp.find( ':' ) + 1 );
-           tmp >> geometry.sector_size;
-       }
-    }
-
-
-    void
-    Fdasd::scanEntryLine(const string& line)
-    {
-       std::istringstream Data(line);
-       classic(Data);
-
-       Entry entry;
-
-       unsigned long StartM = 0;
-       unsigned long EndM = 0;
-       unsigned long SizeM = 0;
-
-       string devname;
-       Data >> devname >> StartM >> EndM >> SizeM;
-
-       string::size_type pos = devname.find_last_not_of("0123456789");
-       string(devname, pos + 1) >> entry.num;
-
-       y2mil("Fields Num:" << entry.num << " Start:" << StartM << " End:" << 
EndM <<
-             " Size:" << SizeM);
-
-       assert(!Data.fail());
-       assert(entry.num != 0);
-
-       if (Data.fail() || entry.num == 0)
-       {
-           y2err("invalid line:" << line);
-           return;
-       }
-
-       unsigned long start = StartM / geometry.heads;
-       unsigned long csize = EndM / geometry.heads - start + 1;
-       if( start+csize > geometry.cylinders )
-       {
-           csize = geometry.cylinders - start;
-           y2mil("new csize:" << csize);
-       }
-       entry.cylRegion = Region(start, csize);
-
-       entry.headRegion = Region(StartM, SizeM);
-
-       y2mil("Fields num:" << entry.num << " cylRegion:" << entry.cylRegion << 
" headRegion:" <<
-             entry.headRegion);
-
-       entries.push_back(entry);
-    }
-
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-2.25.8/storage/Dasdview.h 
new/libstorage-2.25.9/storage/Dasdview.h
--- old/libstorage-2.25.8/storage/Dasdview.h    2014-02-03 10:49:03.000000000 
+0100
+++ new/libstorage-2.25.9/storage/Dasdview.h    2014-02-24 14:59:33.000000000 
+0100
@@ -59,45 +59,6 @@
 
     };
 
-
-    class Fdasd
-    {
-
-    public:
-
-       Fdasd(const string& device);
-
-       struct Entry
-       {
-           Entry() : num(0) {}
-
-           unsigned num;
-           Region cylRegion;
-           Region headRegion;
-
-           friend std::ostream& operator<<(std::ostream& s, const Entry& e);
-       };
-
-       const Geometry& getGeometry() const { return geometry; }
-
-       typedef vector<Entry>::const_iterator const_iterator;
-
-       const vector<Entry>& getEntries() const { return entries; }
-
-       bool getEntry(unsigned num, Entry& entry) const;
-
-    private:
-
-       typedef vector<Entry>::iterator iterator;
-
-       Geometry geometry;
-       vector<Entry> entries;
-
-       void scanGeometry(SystemCmd& cmd);
-       void scanEntryLine(const string& line);
-
-    };
-
 }
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-2.25.8/storage/Disk.cc 
new/libstorage-2.25.9/storage/Disk.cc
--- old/libstorage-2.25.8/storage/Disk.cc       2014-02-21 11:40:44.000000000 
+0100
+++ new/libstorage-2.25.9/storage/Disk.cc       2014-02-24 14:59:33.000000000 
+0100
@@ -597,28 +597,28 @@
 }
 
 
-bool
-Disk::checkFakePartition(SystemInfo& systeminfo, const list<Partition*>& pl) 
const
-{
-    // For FBA DASDs without an partition table the kernel generates a fake
-    // partition spanning almost the whole disk.
-
-    if (isDasd() && detected_label.empty() && pl.size() == 1 && 
pl.front()->nr() == 1)
+    bool
+    Disk::checkFakePartition(SystemInfo& systeminfo, const list<Partition*>& 
pl) const
     {
-       Region disk_region = detectSysfsBlkRegion();
-       Region part_region = pl.front()->detectSysfsBlkRegion();
-
-       y2mil("disk:" << disk_region << " part:" << part_region);
+       // For FBA DASDs without an partition table the kernel generates a fake
+       // partition spanning almost the whole disk.
 
-       if (disk_region.end() == part_region.end() && part_region.start() == 2)
+       if (isDasd() && detected_label.empty() && pl.size() == 1 && 
pl.front()->nr() == 1)
        {
-           y2mil("found fake partition on " << device());
-           return true;
+           Region disk_region = detectSysfsBlkRegion();
+           Region part_region = pl.front()->detectSysfsBlkRegion();
+
+           y2mil("disk:" << disk_region << " part:" << part_region);
+
+           if (disk_region.end() == part_region.end() && part_region.start() 
== 2)
+           {
+               y2mil("found fake partition on " << device());
+               return true;
+           }
        }
-    }
 
-    return false;
-}
+       return false;
+    }
 
 
 bool
@@ -1605,6 +1605,7 @@
        y2mil("stage:" << stage << " col:" << col.size() << " vol:" << 
vol.size());
     }
 
+
 int Disk::commitChanges( CommitStage stage, Volume* vol )
     {
     y2mil("name:" << name() << " stage:" << stage);
@@ -1624,6 +1625,7 @@
     return( ret );
     }
 
+
 int Disk::commitChanges( CommitStage stage )
     {
     y2mil("name:" << name() << " stage:" << stage);
@@ -1988,7 +1990,7 @@
            cmd_line << PARTEDCMD;
            cmd_line << "--align=" << 
toString(getStorage()->getPartitionAlignment()) << " ";
            cmd_line << quote(device()) << " unit cyl mkpart ";
-           if( label != "sun" )
+           if (label != "dasd" && label != "sun")
                {
                switch( p->type() )
                    {
@@ -2172,9 +2174,14 @@
                else
                    y2war( "suppressing failed removal del_ptable:" << 
del_ptable );
                }
-           ProcParts parts;
-           if( parts.findDevice(getPartName(p->OrigNr())) )
-               callDelpart( p->OrigNr() );
+           // only check for successful removal (kernel side) of partitions
+           // where no renumbering can happen
+           if (p->type() != LOGICAL && label != "dasd")
+           {
+               ProcParts parts;
+               if (parts.findDevice(getPartName(p->OrigNr())))
+                   callDelpart(p->OrigNr());
+           }
            }
        if( ret==0 )
            {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-2.25.8/storage/Disk.h 
new/libstorage-2.25.9/storage/Disk.h
--- old/libstorage-2.25.8/storage/Disk.h        2014-02-20 16:09:58.000000000 
+0100
+++ new/libstorage-2.25.9/storage/Disk.h        2014-02-24 14:59:33.000000000 
+0100
@@ -97,7 +97,7 @@
        Region detectSysfsBlkRegion(bool log_error = true) const;
 
        unsigned numPartitions() const;
-       bool isDasd() const { return( nm.find("dasd")==0 ); }
+       bool isDasd() const { return boost::starts_with(nm, "dasd"); }
        bool isIScsi() const { return transport == ISCSI; }
        static bool isIScsi(const Disk& d) { return d.isIScsi(); }
        bool isLogical( unsigned nr ) const;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-2.25.8/storage/Storage.cc 
new/libstorage-2.25.9/storage/Storage.cc
--- old/libstorage-2.25.8/storage/Storage.cc    2014-02-21 17:34:44.000000000 
+0100
+++ new/libstorage-2.25.9/storage/Storage.cc    2014-02-24 14:59:33.000000000 
+0100
@@ -812,9 +812,9 @@
     list<DiskData> dl;
     while( i!=dlist.end() )
        {
-       if( i->second.range > 1 && (i->second.size > 0 || i->first.find("dasd") 
== 0))
+       if (i->second.range > 1 && (i->second.size > 0 || 
boost::starts_with(i->first, "dasd")))
            {
-           DiskData::DTyp t = (i->first.find("dasd") == 0) ? DiskData::DASD : 
DiskData::DISK;
+           DiskData::DTyp t = boost::starts_with(i->first, "dasd") ? 
DiskData::DASD : DiskData::DISK;
 
            if (t == DiskData::DASD)
                {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-2.25.8/storage/StorageDefines.h 
new/libstorage-2.25.9/storage/StorageDefines.h
--- old/libstorage-2.25.8/storage/StorageDefines.h      2014-01-23 
14:42:45.000000000 +0100
+++ new/libstorage-2.25.9/storage/StorageDefines.h      2014-02-24 
14:59:33.000000000 +0100
@@ -77,7 +77,6 @@
 
 #define DASDFMTBIN "/sbin/dasdfmt"
 #define DASDVIEWBIN "/sbin/dasdview"
-#define FDASDBIN "/sbin/fdasd"
 
 #define UDEVADMBIN "/sbin/udevadm"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-2.25.8/storage/StorageInterface.h 
new/libstorage-2.25.9/storage/StorageInterface.h
--- old/libstorage-2.25.8/storage/StorageInterface.h    2014-02-21 
17:34:44.000000000 +0100
+++ new/libstorage-2.25.9/storage/StorageInterface.h    2014-02-24 
14:59:33.000000000 +0100
@@ -882,7 +882,6 @@
        DM_NOT_IN_LIST = -10006,
 
        DASD_NOT_POSSIBLE = -11000,
-       DASD_FDASD_FAILED = -11001,
        DASD_DASDFMT_FAILED = -11002,
 
        DMPART_CHANGE_READONLY = -12001,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-2.25.8/storage/SystemInfo.h 
new/libstorage-2.25.9/storage/SystemInfo.h
--- old/libstorage-2.25.8/storage/SystemInfo.h  2014-02-14 09:32:43.000000000 
+0100
+++ new/libstorage-2.25.9/storage/SystemInfo.h  2014-02-24 14:59:33.000000000 
+0100
@@ -65,7 +65,6 @@
        const Lsscsi& getLsscsi() { return *lsscsi; }
        const Parted& getParted(const string& device) { return 
parteds.get(device); }
        const Dasdview& getDasdview(const string& device) { return 
dasdviews.get(device); }
-       const Fdasd& getFdasd(const string& device) { return 
fdasds.get(device); }
        const CmdDmsetup& getCmdDmsetup() { return *cmddmsetup; }
        const CmdCryptsetup& getCmdCryptsetup(const string& name) { return 
cmdcryptsetups.get(name); }
        const CmdDmraid& getCmdDmraid() { return *cmddmraid; }
@@ -123,7 +122,6 @@
        LazyObject<Blkid> blkid;
        LazyObject<Lsscsi> lsscsi;
        LazyObjects<Parted> parteds;
-       LazyObjects<Fdasd> fdasds;
        LazyObjects<Dasdview> dasdviews;
        LazyObject<CmdDmsetup> cmddmsetup;
        LazyObjects<CmdCryptsetup> cmdcryptsetups;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-2.25.8/storage/gen_md5sum.cc 
new/libstorage-2.25.9/storage/gen_md5sum.cc
--- old/libstorage-2.25.8/storage/gen_md5sum.cc 2014-02-21 17:35:40.000000000 
+0100
+++ new/libstorage-2.25.9/storage/gen_md5sum.cc 2014-02-24 15:01:05.000000000 
+0100
@@ -1,5 +1,5 @@
-#define SOURCES_MD5SUM   "e038440b03be7c7a80ceb180dc3ed294"
-#define SOURCES_MD5_DATE " Fri 21 Feb 17:35:40 CET 2014 "
+#define SOURCES_MD5SUM   "6b670645cb598698baf7428432785926"
+#define SOURCES_MD5_DATE " Mon 24 Feb 15:01:05 CET 2014 "
 namespace storage
 {
 const char* GetSourceMd5() { return SOURCES_MD5SUM; }

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to