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 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_endnr() << " "
<< 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::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(&(*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(&(*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
*
*
- * $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 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 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 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...