diff --git a/libstorage/src/Dasd.cc b/libstorage/src/Dasd.cc index fbc5092f1..b005446ff 100644 --- a/libstorage/src/Dasd.cc +++ b/libstorage/src/Dasd.cc @@ -275,6 +275,15 @@ int Dasd::createPartition( PartitionType type, unsigned long start, 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()) + { + y2mil("harvesting old password"); + p->setCryptPwd(i->getCryptPwd()); + } + } addToList( p ); } y2mil("ret:" << ret); diff --git a/libstorage/src/DmPartCo.cc b/libstorage/src/DmPartCo.cc index acff551c3..4a95ddaec 100644 --- a/libstorage/src/DmPartCo.cc +++ b/libstorage/src/DmPartCo.cc @@ -95,6 +95,15 @@ DmPartCo::addNewDev(string& device) dm->getFsInfo( p ); dm->setCreated(); dm->addUdevData(); + ConstDmPartPair pp = dmpartPair(); + for( ConstDmPartIter i=pp.begin(); i!=pp.end(); ++i ) + { + if( i->deleted() && i->nr()==p->nr() && !i->getCryptPwd().empty()) + { + y2mil("harvesting old password"); + dm->setCryptPwd(i->getCryptPwd()); + } + } addToList( dm ); } handleWholeDevice(); diff --git a/libstorage/src/MdPartCo.cc b/libstorage/src/MdPartCo.cc index 779d1efb2..0c1f1b897 100644 --- a/libstorage/src/MdPartCo.cc +++ b/libstorage/src/MdPartCo.cc @@ -166,6 +166,15 @@ MdPartCo::addNewDev(string& device) md->getFsInfo( p ); md->setCreated(); md->addUdevData(); + ConstMdPartPair pp = mdpartPair(); + for( ConstMdPartIter i=pp.begin(); i!=pp.end(); ++i ) + { + if( i->deleted() && i->nr()==p->nr() && !i->getCryptPwd().empty()) + { + y2mil("harvesting old password"); + md->setCryptPwd(i->getCryptPwd()); + } + } addToList( md ); y2mil("device:" << device << " was added to MdPartCo : " << dev); diff --git a/libstorage/src/Volume.cc b/libstorage/src/Volume.cc index 1284c8c98..13be517e4 100644 --- a/libstorage/src/Volume.cc +++ b/libstorage/src/Volume.cc @@ -3324,12 +3324,13 @@ std::ostream& operator<< (std::ostream& s, const Volume &v ) if( v.encryption != v.orig_encryption && v.orig_encryption!=storage::ENC_NONE ) s << " orig_encr:" << toString(v.orig_encryption); + } #ifdef DEBUG_CRYPT_PASSWORD + if( !v.crypt_pwd.empty() ) s << " pwd:" << v.crypt_pwd; - if( v.orig_crypt_pwd.empty() && v.crypt_pwd!=v.orig_crypt_pwd ) - s << " orig_pwd:" << v.orig_crypt_pwd; + if( !v.orig_crypt_pwd.empty() && v.crypt_pwd!=v.orig_crypt_pwd ) + s << " orig_pwd:" << v.orig_crypt_pwd; #endif - } if( !v.dmcrypt_dev.empty() ) s << " dmcrypt:" << v.dmcrypt_dev; if( v.dmcrypt_active )