[yast-commit] r49337 - in /branches/tmp/aschnell/part-redesign/libstorage/src: Md.cc Md.h
Author: aschnell Date: Wed Jul 23 13:40:16 2008 New Revision: 49337 URL: http://svn.opensuse.org/viewcvs/yast?rev=49337&view=rev Log: - backup commit Modified: branches/tmp/aschnell/part-redesign/libstorage/src/Md.cc branches/tmp/aschnell/part-redesign/libstorage/src/Md.h Modified: branches/tmp/aschnell/part-redesign/libstorage/src/Md.cc URL: http://svn.opensuse.org/viewcvs/yast/branches/tmp/aschnell/part-redesign/libstorage/src/Md.cc?rev=49337&r1=49336&r2=49337&view=diff ============================================================================== --- branches/tmp/aschnell/part-redesign/libstorage/src/Md.cc (original) +++ branches/tmp/aschnell/part-redesign/libstorage/src/Md.cc Wed Jul 23 13:40:16 2008 @@ -245,48 +245,58 @@ return( ret ); } -void -Md::computeSize() + +// TODO: make this function available in StorageInterface.h +unsigned long long +Md::computeSizeK(storage::MdType md_type, list<string> devices) const +{ + unsigned long long sumK = 0; + unsigned long long smallestK = 0; + + for (list<string>::const_iterator i = devices.begin(); i != devices.end(); i++) { - unsigned long long sum = 0; - unsigned long long smallest = 0; - list<string>::const_iterator i=devs.begin(); - while( i!=devs.end() ) - { - const Volume* v = getContainer()->getStorage()->getVolume( *i ); - sum += v->sizeK(); - if( smallest==0 ) - smallest = v->sizeK(); + const Volume* v = getContainer()->getStorage()->getVolume(*i); + sumK += v->sizeK(); + if (smallestK == 0) + smallestK = v->sizeK(); else - smallest = min( smallest, v->sizeK() ); - ++i; - } - unsigned long long rsize = 0; - switch( md_type ) - { + smallestK = min(smallestK, v->sizeK()); + } + + unsigned long long sizeK = 0; + switch (md_type) + { case RAID0: - rsize = sum; + sizeK = sumK; break; case RAID1: case MULTIPATH: - rsize = smallest; + sizeK = smallestK; break; case RAID5: - rsize = devs.size()==0 ? 0 : smallest*(devs.size()-1); + sizeK = devices.size()==0 ? 0 : smallestK*(devices.size()-1); break; case RAID6: - rsize = devs.size()<2 ? 0 : smallest*(devs.size()-2); + sizeK = devices.size()<2 ? 0 : smallestK*(devices.size()-2); break; case RAID10: - rsize = smallest*devs.size()/2; + sizeK = smallestK*devices.size()/2; break; default: - rsize = 0; - } - y2milestone( "type:%d smallest:%llu sum:%llu size:%llu", md_type, - smallest, sum, rsize ); - setSize( rsize ); + sizeK = 0; + break; } + y2milestone ("type:%d smallest:%llu sum:%llu size:%llu", md_type, + smallestK, sumK, sizeK); + return sizeK; +} + + +void +Md::computeSize() +{ + setSize(computeSizeK(md_type, devs)); +} void Md::addSpareDevice( const string& dev ) Modified: branches/tmp/aschnell/part-redesign/libstorage/src/Md.h URL: http://svn.opensuse.org/viewcvs/yast/branches/tmp/aschnell/part-redesign/libstorage/src/Md.h?rev=49337&r1=49336&r2=49337&view=diff ============================================================================== --- branches/tmp/aschnell/part-redesign/libstorage/src/Md.h (original) +++ branches/tmp/aschnell/part-redesign/libstorage/src/Md.h Wed Jul 23 13:40:16 2008 @@ -55,6 +55,8 @@ bool equalContent( const Md& rhs ) const; void logDifference( const Md& d ) const; + unsigned long long computeSizeK(storage::MdType md_type, std::list<string> devices) const; + protected: void init(); void computeSize(); -- To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org For additional commands, e-mail: yast-commit+help@opensuse.org
participants (1)
-
aschnell@svn.opensuse.org