Hello community, here is the log from the commit of package yast2-storage checked in at Thu Apr 6 19:12:51 CEST 2006. -------- --- yast2-storage/yast2-storage.changes 2006-04-05 18:29:12.000000000 +0200 +++ yast2-storage/yast2-storage.changes 2006-04-06 19:00:48.000000000 +0200 @@ -1,0 +2,11 @@ +Thu Apr 6 15:16:05 CEST 2006 - fehr@suse.de + +- fix usage of whole disk in EVMS after removal of disk label (#162945) +- fix problems during enlarging logical partitions (#162766, #162995) +- correctly recognize hfs boot partition on mac (#163706) +- fix handling of devices in subdirectories in EVMS config +- use dasdview, now handle LDL and CDL formatted dasd +- suppresse loop evms compatible volumes (#163601) +- version 2.13.47 + +------------------------------------------------------------------- Old: ---- yast2-storage-2.13.46.tar.bz2 New: ---- yast2-storage-2.13.47.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ yast2-storage.spec ++++++ --- /var/tmp/diff_new_pack.JgThqh/_old 2006-04-06 19:12:03.000000000 +0200 +++ /var/tmp/diff_new_pack.JgThqh/_new 2006-04-06 19:12:03.000000000 +0200 @@ -1,5 +1,5 @@ # -# spec file for package yast2-storage (Version 2.13.46) +# spec file for package yast2-storage (Version 2.13.47) # # Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany. # This file and all modifications and additions to the pristine @@ -11,12 +11,12 @@ # norootforbuild Name: yast2-storage -Version: 2.13.46 +Version: 2.13.47 Release: 1 License: GPL Group: System/YaST BuildRoot: %{_tmppath}/%{name}-%{version}-build -Source0: yast2-storage-2.13.46.tar.bz2 +Source0: yast2-storage-2.13.47.tar.bz2 prefix: /usr BuildRequires: blocxx-devel docbook-xsl-stylesheets doxygen evms gcc-c++ libxcrypt-devel libxslt openssl-devel perl-XML-Writer sablot sgml-skel swig update-desktop-files yast2 yast2-devtools yast2-installation yast2-perl-bindings yast2-testsuite Requires: yast2 parted yast2-installation yast2-storage-lib yast2-perl-bindings @@ -40,7 +40,7 @@ %prep -%setup -n yast2-storage-2.13.46 +%setup -n yast2-storage-2.13.47 %build %{prefix}/bin/y2tool y2autoconf @@ -164,6 +164,14 @@ %doc %{prefix}/share/doc/packages/yast2-storage/libstorage %changelog -n yast2-storage +* Thu Apr 06 2006 - fehr@suse.de +- fix usage of whole disk in EVMS after removal of disk label (#162945) +- fix problems during enlarging logical partitions (#162766, #162995) +- correctly recognize hfs boot partition on mac (#163706) +- fix handling of devices in subdirectories in EVMS config +- use dasdview, now handle LDL and CDL formatted dasd +- suppresse loop evms compatible volumes (#163601) +- version 2.13.47 * Wed Apr 05 2006 - fehr@suse.de - fix missing creation of boot partition in proposal (#163387) - prevent failing mount/format due to evms usage of partitions ++++++ yast2-storage-2.13.46.tar.bz2 -> yast2-storage-2.13.47.tar.bz2 ++++++ diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-storage-2.13.46/VERSION new/yast2-storage-2.13.47/VERSION --- old/yast2-storage-2.13.46/VERSION 2006-04-05 18:29:17.000000000 +0200 +++ new/yast2-storage-2.13.47/VERSION 2006-04-06 16:07:45.000000000 +0200 @@ -1 +1 @@ -2.13.46 +2.13.47 diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-storage-2.13.46/libstorage/src/Dasd.cc new/yast2-storage-2.13.47/libstorage/src/Dasd.cc --- old/yast2-storage-2.13.46/libstorage/src/Dasd.cc 2006-02-07 15:22:13.000000000 +0100 +++ new/yast2-storage-2.13.47/libstorage/src/Dasd.cc 2006-04-06 18:32:21.000000000 +0200 @@ -30,29 +30,81 @@ y2debug( "destructed dasd %s", dev.c_str() ); } -bool Dasd::detectPartitions() +bool Dasd::detectPartitionsFdasd( ProcPart& ppart ) { bool ret = true; string cmd_line = "/sbin/fdasd -p " + device(); - setLabelData( "dasd" ); system_stderr.erase(); y2milestone( "executing cmd:%s", cmd_line.c_str() ); SystemCmd Cmd( cmd_line ); y2milestone( "retcode:%d", Cmd.retcode() ); if( Cmd.retcode() == 0 ) + checkFdasdOutput( Cmd, ppart ); + y2milestone( "ret:%d partitons:%zd", ret, vols.size() ); + return( ret ); + } + +bool Dasd::detectPartitions() + { + bool ret = true; + string cmd_line = "dasdview -x " + device(); + system_stderr.erase(); + detected_label = "dasd"; + setLabelData( "dasd" ); + y2milestone( "executing cmd:%s", cmd_line.c_str() ); + SystemCmd Cmd( cmd_line ); + y2milestone( "retcode:%d", Cmd.retcode() ); + if( Cmd.retcode() == 0 ) { + ProcPart ppart; + if( Cmd.select( "^format" )>0 ) + { + string tmp = *Cmd.getLine(0, true); + y2milestone( "Format line:%s", tmp.c_str() ); + tmp = tmp.erase( 0, tmp.find( ':' ) + 1 ); + tmp = extractNthWord( 4, tmp ); + tolower( tmp ); + if( tmp == "cdl" ) + fmt = DASDF_CDL; + else if( tmp == "ldl" ) + fmt = DASDF_LDL; + } getGeometry( Cmd, cyl, head, sector ); new_cyl = cyl; new_head = head; new_sector = sector; - y2milestone( "After fdasd Head:%u Sector:%u Cylinder:%lu SizeK:%llu", + y2milestone( "After dasdview Head:%u Sector:%u Cylinder:%lu SizeK:%llu", head, sector, cyl, size_k ); if( size_k==0 ) { size_k = (head*sector*cyl)/2; y2milestone( "New SizeK:%llu", size_k ); } + y2mil( "fmt:" << fmt ); + switch( fmt ) + { + case DASDF_CDL: + ret = Dasd::detectPartitionsFdasd(ppart); + break; + case DASDF_LDL: + { + max_primary = 1; + unsigned long long s = cylinderToKb(cyl); + Partition *p = new Partition( *this, 1, s, 0, cyl, + PRIMARY, Partition::ID_LINUX, + false ); + if( ppart.getSize( p->device(), s )) + { + p->setSize( s ); + } + addToList( p ); + ret = true; + } + break; + default: + break; + } } else { @@ -61,10 +113,6 @@ } byte_cyl = head * sector * 512; y2milestone( "byte_cyl:%lu", byte_cyl ); - if( Cmd.retcode() == 0 ) - checkFdasdOutput( Cmd ); - detected_label = "dasd"; - setLabelData( "dasd" ); y2milestone( "ret:%d partitons:%zd detected label:%s", ret, vols.size(), label.c_str() ); return( ret ); @@ -102,12 +150,11 @@ } bool -Dasd::checkFdasdOutput( SystemCmd& cmd ) +Dasd::checkFdasdOutput( SystemCmd& cmd, ProcPart& ppart ) { int cnt; string line; string tmp; - ProcPart ppart; list<Partition *> pl; Regex part( "^"+device()+"[0-9]+$" ); @@ -203,8 +250,10 @@ if( cmd.select( "cylinders" )>0 ) { val = 0; - y2milestone( "Cylinder line:%s", (*cmd.getLine(0, true)).c_str() ); - tmp = extractNthWord( 2, *cmd.getLine(0, true)); + tmp = *cmd.getLine(0, true); + y2milestone( "Cylinder line:%s", tmp.c_str() ); + tmp = tmp.erase( 0, tmp.find( ':' ) + 1 ); + tmp = extractNthWord( 3, tmp ); tmp >> val; if( val>0 ) { @@ -215,8 +264,10 @@ if( cmd.select( "tracks per" )>0 ) { val = 0; - y2milestone( "Tracks line:%s", (*cmd.getLine(0, true)).c_str() ); - tmp = extractNthWord( 4, *cmd.getLine(0, true)); + tmp = *cmd.getLine(0, true); + y2milestone( "Tracks line:%s", tmp.c_str() ); + tmp = tmp.erase( 0, tmp.find( ':' ) + 1 ); + tmp = extractNthWord( 3, tmp ); tmp >> val; if( val>0 ) { @@ -227,8 +278,10 @@ if( cmd.select( "blocks per" )>0 ) { val = 0; - y2milestone( "Blocks line:%s", (*cmd.getLine(0, true)).c_str() ); - tmp = extractNthWord( 4, *cmd.getLine(0, true)); + tmp = *cmd.getLine(0, true); + y2milestone( "Blocks line:%s", tmp.c_str() ); + tmp = tmp.erase( 0, tmp.find( ':' ) + 1 ); + tmp = extractNthWord( 3, tmp ); tmp >> val; if( val>0 ) { @@ -236,11 +289,13 @@ s=val; } } - if( cmd.select( "bytes per" )>0 ) + if( cmd.select( "blocksize" )>0 ) { val = 0; - y2milestone( "Bytes line:%s", (*cmd.getLine(0, true)).c_str() ); - tmp = extractNthWord( 4, *cmd.getLine(0, true)); + tmp = *cmd.getLine(0, true); + y2milestone( "Bytes line:%s", tmp.c_str() ); + tmp = tmp.erase( 0, tmp.find( ':' ) + 1 ); + tmp = extractNthWord( 3, tmp ); tmp >> val; if( val>0 ) { @@ -594,11 +649,25 @@ { y2debug( "operator= from %s", rhs.nm.c_str() ); *((Disk*)this) = rhs; + fmt = rhs.fmt; return( *this ); } Dasd::Dasd( const Dasd& rhs ) : Disk(rhs) { + fmt = DASDF_NONE; y2debug( "constructed dasd by copy constructor from %s", rhs.nm.c_str() ); } +namespace storage +{ +std::ostream& operator<< (std::ostream& s, const Dasd& d ) + { + s << *((Disk*)&d); + s << " fmt:" << d.fmt; + return( s ); + } +} + + + diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-storage-2.13.46/libstorage/src/Dasd.h new/yast2-storage-2.13.47/libstorage/src/Dasd.h --- old/yast2-storage-2.13.46/libstorage/src/Dasd.h 2005-12-13 12:46:54.000000000 +0100 +++ new/yast2-storage-2.13.47/libstorage/src/Dasd.h 2006-04-06 18:20:31.000000000 +0200 @@ -7,6 +7,7 @@ { class SystemCmd; +class ProcPart; class Dasd : public Disk { @@ -32,8 +33,12 @@ bool detectGeometry(); protected: + enum DasdFormat { DASDF_NONE, DASDF_LDL, DASDF_CDL }; + + virtual void print( std::ostream& s ) const { s << *this; } + bool detectPartitionsFdasd(ProcPart& ppart); bool detectPartitions(); - bool checkFdasdOutput( SystemCmd& Cmd ); + bool checkFdasdOutput( SystemCmd& Cmd, ProcPart& ppart ); bool scanFdasdLine( const string& Line, unsigned& nr, unsigned long& start, unsigned long& csize ); void getGeometry( SystemCmd& cmd, unsigned long& c, @@ -46,8 +51,10 @@ int doSetType( Volume* v ) { return 0; } int doCreateLabel() { return 0; } int doDasdfmt(); + DasdFormat fmt; Dasd& operator= ( const Dasd& rhs ); + friend std::ostream& operator<< (std::ostream&, const Dasd& ); }; diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-storage-2.13.46/libstorage/src/Disk.cc new/yast2-storage-2.13.47/libstorage/src/Disk.cc --- old/yast2-storage-2.13.46/libstorage/src/Disk.cc 2006-04-05 17:24:09.000000000 +0200 +++ new/yast2-storage-2.13.47/libstorage/src/Disk.cc 2006-04-06 11:35:02.000000000 +0200 @@ -2231,18 +2231,32 @@ end_sect = start_sect + p->sizeK()*2 - 1; y2milestone( "end_sect %llu", end_sect ); const Partition * after = getPartitionAfter( p ); + unsigned long max_end = sizeK()*2-1; if( after!=NULL ) { unsigned long long start_after, end_after; getPartedSectors( after, start_after, end_after ); - if( start_after<=end_sect || - start_after-end_sect < byte_cyl/512*2 ) + max_end = start_after-1; + if( p->type() == LOGICAL ) + max_end--; + } + else if( p->type()==LOGICAL ) + { + PartPair ext = partPair(isExtended); + if( !ext.empty() ) { - y2mil( "start_after:" << start_after << " end_sect:" << end_sect ); - end_sect=start_after-1; - y2mil( "after new end_sect:" << end_sect ); + unsigned long long start_ext, end_ext; + getPartedSectors( &(*ext.begin()), start_ext, end_ext ); + max_end = end_ext; } } + y2mil( "max_end:" << max_end << " end_sect:" << end_sect ); + if( max_end<end_sect || + max_end-end_sect < byte_cyl/512*2 ) + { + end_sect = max_end; + y2mil( "new end_sect:" << end_sect ); + } cmd_line << "YAST_IS_RUNNING=1 " << PARTEDCMD << device() << " unit s resize " << p->nr() << " " << start_sect << " " << end_sect; @@ -2277,7 +2291,7 @@ { const Partition * ret = NULL; y2mil( "p:" << *p ); - PartPair pp = partPair( notDeleted ); + PartPair pp = partPair( (p->type()==LOGICAL)?notDeleted:notDeletedLog ); for( PartIter pi=pp.begin(); pi!=pp.end(); ++pi ) { if( pi->cylStart()>p->cylStart() && diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-storage-2.13.46/libstorage/src/EvmsCo.cc new/yast2-storage-2.13.47/libstorage/src/EvmsCo.cc --- old/yast2-storage-2.13.46/libstorage/src/EvmsCo.cc 2006-03-16 19:40:36.000000000 +0100 +++ new/yast2-storage-2.13.47/libstorage/src/EvmsCo.cc 2006-04-06 18:59:25.000000000 +0200 @@ -555,7 +555,7 @@ if( mi!=data.volumes.end() ) { Pv p; - p.device = unEvmsDevice( mi->second.device ); + p.device = evmsToDev( mi->second.device ); p.status = "allocatable"; p.uuid = i->uuid; p.num_pe = i->size; @@ -624,11 +624,13 @@ { y2milestone( "begin" ); map<unsigned,EvmsVol>::const_iterator v=data.volumes.begin(); + Regex loop( "^loop[0-9]+$" ); while( v!=data.volumes.end() ) { pe_size = 1; if( v->second.name.find( "lvm/" )!=0 && - v->second.name.find( "lvm2/" )!=0 ) + v->second.name.find( "lvm2/" )!=0 && + (!loop.match( v->second.name ) || v->second.native) ) { addLv( v->second.sizeK, v->second.name, v->second.native ); if( v->second.native ) @@ -704,11 +706,32 @@ addToList( v ); } -string EvmsCo::unEvmsDevice( const string& dev ) +string EvmsCo::evmsToDev( const string& edev ) { - string ret( dev ); + string ret( edev ); if( ret.find( "/dev/evms/" )==0 ) ret.erase( 5, 5 ); + string::iterator it = ret.begin(); + while( it!=ret.end() ) + { + if( *it == '!' || *it == '|' ) + *it = '/'; + ++it; + } + return( ret ); + } + +string EvmsCo::devToEvms( const string& dev ) + { + string ret( dev ); + string::size_type pos = ret.find( '|', 5 ); + while( pos!=string::npos ) + { + ret[pos++] = '!'; + pos = ret.find( '|', pos ); + } + if( ret.find( "/dev/" )==0 ) + ret.insert( 5, "evms/" ); return( ret ); } @@ -718,7 +741,7 @@ if( !deleted() && find( pv_remove.begin(), pv_remove.end(), *p )==pv_remove.end() ) { - string d = unEvmsDevice( p->device ); + string d = evmsToDev( p->device ); UsedByType t = getStorage()->usedBy( d ); if( t==UB_EVMS || t==UB_NONE ) setUsed( d, UB_EVMS, name() ); diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-storage-2.13.46/libstorage/src/EvmsCo.h new/yast2-storage-2.13.47/libstorage/src/EvmsCo.h --- old/yast2-storage-2.13.46/libstorage/src/EvmsCo.h 2005-12-13 12:46:54.000000000 +0100 +++ new/yast2-storage-2.13.47/libstorage/src/EvmsCo.h 2006-04-06 15:22:33.000000000 +0200 @@ -204,8 +204,9 @@ std::list<string>& lines ); static int getSocketFd(); static bool startHelper( bool retry=false ); - static string unEvmsDevice( const string& dev ); static int executeCmd( const string& cmd ); + static string devToEvms( const string& dev ); + static string evmsToDev( const string& edev ); string uuid; bool lvm1; diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-storage-2.13.46/libstorage/src/Storage.cc new/yast2-storage-2.13.47/libstorage/src/Storage.cc --- old/yast2-storage-2.13.46/libstorage/src/Storage.cc 2006-04-05 15:53:30.000000000 +0200 +++ new/yast2-storage-2.13.47/libstorage/src/Storage.cc 2006-04-06 16:05:45.000000000 +0200 @@ -3610,7 +3610,8 @@ { if( pi->type()==LOGICAL ) { - string dev = "/dev/evms/" + pi->name(); + //string dev = "/dev/evms/" + pi->name(); + string dev = EvmsCo::devToEvms( pi->device() ); y2mil( "evms new dev:" << dev ); VolIterator vv; if( findVolume( dev, vv )) @@ -3624,18 +3625,23 @@ } } } - string dev = "/dev/evms/" + undevDevice(d); + string dev = EvmsCo::devToEvms( d ); + y2mil( "evmsdev:" << dev ); if( findVolume( dev, v )) { v->setDeleted(); v->setSilent(); y2mil( "v:" << *v ); } - if( disk->isEmpty() && !findVolume( "/dev/evms/"+disk->name(), v) ) + if( disk->isEmpty() && !findVolume( EvmsCo::devToEvms(disk->device()), v) ) { EvmsCo* co = dynamic_cast<EvmsCo *>(&(*c)); if( co != NULL ) - co->addLv( disk->sizeK(), disk->name(), false ); + { + string name = EvmsCo::devToEvms(disk->device()); + y2mil( "evmsdev:" << dev ); + co->addLv( disk->sizeK(), name.substr(10), false ); + } } if( rename ) { @@ -3673,14 +3679,13 @@ string dev; if( !extended ) { - dev = "/dev/evms/" + undevDevice(d); + dev = EvmsCo::devToEvms(d); if( findVolume( d, v ) && !findVolume( dev, w )) { EvmsCo* co = dynamic_cast<EvmsCo *>(&(*c)); if( co != NULL ) { - string name = dev.substr( dev.rfind( '/' )+1 ); - Evms* l = new Evms( *co, name, v->sizeK(), 1u ); + Evms* l = new Evms( *co, dev.substr(10), v->sizeK(), 1u ); co->addVolume( l ); y2mil( "l:" << *l ); if( findVolume( dev, w )) @@ -3689,7 +3694,7 @@ } logCo( &(*c) ); } - dev = "/dev/evms/" + undevDevice(disk); + dev = EvmsCo::devToEvms( disk ); if( findVolume( dev, v )) { v->setDeleted(); diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-storage-2.13.46/storage/src/include/custom_part_check_generated.ycp new/yast2-storage-2.13.47/storage/src/include/custom_part_check_generated.ycp --- old/yast2-storage-2.13.46/storage/src/include/custom_part_check_generated.ycp 2006-04-05 18:30:14.000000000 +0200 +++ new/yast2-storage-2.13.47/storage/src/include/custom_part_check_generated.ycp 2006-04-06 16:15:49.000000000 +0200 @@ -24,7 +24,7 @@ * ************************************************************* - $Id: custom_part_check_generated.ycp 27559 2006-02-02 18:17:23Z fehr $ + $Id: custom_part_check_generated.ycp 29810 2006-04-06 14:15:47Z fehr $ */ { @@ -263,6 +263,14 @@ boot_cyl_for_gb = 1073741824 / diskinfo["cyl_size"]:1000000; boot_size = part["size_k"]:0*1024; } + else if( Arch::board_mac() && part["used_fs"]:`unknown==`hfs ) + { + boot_found = true; + boot_end = part["region",0]:0 + part["region",1]:1-1; + boot_fs = part["used_fs"]:`unknown; + boot_cyl_for_gb = 1073741824 / diskinfo["cyl_size"]:1000000; + boot_size = part["size_k"]:0*1024; + } } diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-storage-2.13.46/storage/src/include/evms_lib.ycp new/yast2-storage-2.13.47/storage/src/include/evms_lib.ycp --- old/yast2-storage-2.13.46/storage/src/include/evms_lib.ycp 2006-04-03 18:28:10.000000000 +0200 +++ new/yast2-storage-2.13.47/storage/src/include/evms_lib.ycp 2006-04-06 16:24:09.000000000 +0200 @@ -11,7 +11,7 @@ * Thomas Fehr <fehr@suse.de> * * - * $Id: evms_lib.ycp 27442 2006-01-30 14:53:09Z fehr $ + * $Id: evms_lib.ycp 29812 2006-04-06 14:24:06Z fehr $ * */ @@ -102,6 +102,10 @@ return( ( findfirstof( name, " ;/`'ÂŽ!,"%#" ) == nil ) ); } +define string evms_dev_disk( string dev ) + { + return( Storage::EvmsDevDisk( dev )); + } define list<map> filter_deleted_parts( map<string,map> tg, list<map> plist ) ``{ @@ -111,8 +115,7 @@ if( search( p["device"]:"", "/dev/evms/" )==0 ) { map disk = - Storage::GetDiskPartition( "/dev/" + - substring( p["device"]:"", 10 ) ); + Storage::GetDiskPartition( evms_dev_disk( p["device"]:"" )); if( size(filter( map pa, tg[disk["disk"]:"","partitions"]:[], ``(sformat("%1",pa["nr"]:(any)"")== sformat("%1",disk["nr"]:(any)0) && @@ -134,6 +137,22 @@ return( ret ); } +define list<map> filter_mounted_evms_part( map<string,map> tg, list<map> pa ) + { + list<map> ret = filter( map p, pa, + ``{ + boolean ok = p["evms_native"]:false; + if( !ok ) + { + string dev = evms_dev_disk( p["device"]:"" ); + map part = Storage::GetPartition( tg, dev ); + ok = size(part["mount"]:"")==0; + } + return( ok ); + }); + return( ret ); + } + define list<map> get_pvlist( map<string,map> tg, string name ) ``{ list<map> pv = []; @@ -149,6 +168,7 @@ (p["used_by_type"]:`UB_NONE==`UB_EVMS && p["used_by"]:""==name))); tmp = filter( map p, tmp, ``(size(p["mount"]:"")==0)); + tmp = filter_mounted_evms_part( tg, tmp ); y2milestone( "key %1 tmp %2", k, tmp ); pv = (list<map>)merge( pv, tmp ); } @@ -727,10 +747,14 @@ ``(p["used_by_type"]:`UB_NONE==`UB_NONE)); pa = filter( map p, pa, ``{ - string ndev = "/dev/" + substring( p["device"]:"", 10 ); + string ndev = evms_dev_disk( p["device"]:"" ); return( !Storage::IsRealDisk( tg[ndev]:$[] )); }); pa = filter_deleted_parts( tg, pa ); + if( k=="/dev/evms" ) + { + pa = filter_mounted_evms_part( tg, pa ); + } parts = (list<map>)merge( parts, sort( map x, map y, pa, diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-storage-2.13.46/storage/src/inst_custom_part.ycp new/yast2-storage-2.13.47/storage/src/inst_custom_part.ycp --- old/yast2-storage-2.13.46/storage/src/inst_custom_part.ycp 2006-04-05 18:36:45.000000000 +0200 +++ new/yast2-storage-2.13.47/storage/src/inst_custom_part.ycp 2006-04-06 16:24:10.000000000 +0200 @@ -26,7 +26,7 @@ * ************************************************************* - $Id: inst_custom_part.ycp 29761 2006-04-05 16:36:41Z fehr $ + $Id: inst_custom_part.ycp 29812 2006-04-06 14:24:06Z fehr $ */ { @@ -1034,7 +1034,7 @@ if( !hide && search( partition["device"]:"", "/dev/evms/" )==0 ) { y2milestone( "evms p: %1", partition ); - string d1 = "/dev/" + substring( partition["device"]:"", 10 ); + string d1 = evms_dev_disk( partition["device"]:"" ); y2milestone( "evms d1:%1", d1 ); integer val = search( d1, "/lvm/" ); if( val!=nil && val>0 ) diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-storage-2.13.46/storage/src/modules/Storage.ycp new/yast2-storage-2.13.47/storage/src/modules/Storage.ycp --- old/yast2-storage-2.13.46/storage/src/modules/Storage.ycp 2006-04-05 17:08:50.000000000 +0200 +++ new/yast2-storage-2.13.47/storage/src/modules/Storage.ycp 2006-04-06 16:24:10.000000000 +0200 @@ -19,7 +19,7 @@ * wurde versucht * "intelligent" zu gestallten und ist im einzelen bei den * entspechenden Funktionen * näher erklärt. * - * $Id: Storage.ycp 29741 2006-04-05 15:08:45Z fehr $ + * $Id: Storage.ycp 29812 2006-04-06 14:24:06Z fehr $ */ { @@ -41,6 +41,7 @@ import "StorageDevices"; import "StorageClients"; import "Stage"; + import "String"; import "Hotplug"; import "LibStorage"; @@ -184,6 +185,16 @@ return( ret ); }; +global string EvmsDevDisk( string dev ) + { + string ret = "/dev/" + substring( dev, 10 ); + if( search( ret, "!" )>=0 ) + ret = String::Replace( ret, "!", "/" ); + if( search( ret, "|" )>=0 ) + ret = String::Replace( ret, "|", "/" ); + return( ret ); + } + /* Storage = TargetMap /* Storage = $[ "targets" : $[], @@ -2546,6 +2557,7 @@ if( ret<0 ) y2error( "DeletePartitionTable sint ret:%1", ret ); UpdateTargetMapDisk( disk ); + UpdateTargetMapDisk( "/dev/evms" ); return( ret==0 ); } @@ -4520,7 +4532,7 @@ }); if( size(rdisk)==0 && !p["evms_native"]:false ) { - map d = GetDiskPartition( "/dev/" + name ); + map d = GetDiskPartition( EvmsDevDisk( p["device"]:"" )); if( haskey( tg, d["disk"]:"" )) { rdisk = [ d["disk"]:"" ]; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun...