Author: mpatelcz
Date: Thu Sep 24 15:55:02 2009
New Revision: 58752
URL: http://svn.opensuse.org/viewcvs/yast?rev=58752&view=rev
Log:
MD Volume used by MD Container - implemented.
Modified:
branches/tmp/mpatelcz/SLE-11-SP1-Stash/libstorage/src/MdCo.cc
Modified: branches/tmp/mpatelcz/SLE-11-SP1-Stash/libstorage/src/MdCo.cc
URL: http://svn.opensuse.org/viewcvs/yast/branches/tmp/mpatelcz/SLE-11-SP1-Stash/libstorage/src/MdCo.cc?rev=58752&r1=58751&r2=58752&view=diff
==============================================================================
--- branches/tmp/mpatelcz/SLE-11-SP1-Stash/libstorage/src/MdCo.cc (original)
+++ branches/tmp/mpatelcz/SLE-11-SP1-Stash/libstorage/src/MdCo.cc Thu Sep 24 15:55:02 2009
@@ -82,17 +82,6 @@
}
-/* Call after parsing '/proc/mdstat'.
- * It will connect any md volume with proper container.
- * Each volume will be set as 'used by'
- */
-void
-MdCo::ConnectMdDevs()
-{
- //
-}
-
-
void
MdCo::getMdData()
{
@@ -116,7 +105,8 @@
y2mil( "mdstat line:" << line2 );
//Md* m = new Md( *this, line, line2 );
Md* m = new Md(*this, dev_name);
- addMd( m );
+ /* Add and try to connect */
+ addMd( m , true);
}
getline( file, line );
}
@@ -216,28 +206,65 @@
MdCo::connectMd(Md* m)
{
list::iterator i = vols.begin();
+ string parent;
+
+ y2mil("Entered for device: " << m->name());
+ /* Enumerate all md devices that already have been added*/
while( i != vols.end() )
{
- /* */
Md* tmpMd = dynamic_cast(*i);
if( tmpMd == 0 )
{
+ /* Should not happen. */
i++;
continue;
}
+ y2mil("tmpMd name: " << tmpMd->name());
switch (m->personality())
{
case storage::CONTAINER:
+ if( tmpMd->personality() != storage::CONTAINER &&
+ tmpMd->personality() != storage::RAID_UNK)
+ {
+ /* It is a RAID Volume*/
+ tmpMd->getParent(parent);
+ if( !parent.empty() )
+ {
+ y2mil("Parent not empty.");
+ if( parent == m->name() )
+ {
+ y2mil("Parent matched! Settign device " << tmpMd->name() <<
+ " as used by " << m->name());
+ tmpMd->setUsedBy(UB_MD,m->name());
+ }
+ }
+ }
break;
case storage::RAID_UNK:
/* Error */
break;
default:
/* All RAID types 0,1,5,10,6,...*/
- break;
- }
+ if( tmpMd->personality() == storage::CONTAINER )
+ {
+ m->getParent(parent);
+ if( !parent.empty() )
+ {
+ if( tmpMd->name() == parent )
+ {
+ /* Matched! */
+ y2mil("Parent matched! Settign device " << m->name() <<
+ " as used by " << tmpMd->name());
+ m->setUsedBy(UB_MD,tmpMd->name());
+ }
+ }
+ }
+ break;
}
+ i++;
+ } /* while */
+ y2mil("Exiting");
}
void
@@ -247,6 +274,7 @@
{
if( connect )
{
+ y2mil("Connecting device: " << m->name());
connectMd(m);
}
addToList( m );
--
To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org
For additional commands, e-mail: yast-commit+help@opensuse.org