Hello community, here is the log from the commit of package libstorage for openSUSE:12.1 checked in at 2011-11-05 11:20:12 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:12.1/libstorage (Old) and /work/SRC/openSUSE:12.1/.libstorage.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "libstorage", Maintainer is "ASchnell@suse.com" Changes: -------- --- /work/SRC/openSUSE:12.1/libstorage/libstorage.changes 2011-11-02 11:59:16.000000000 +0100 +++ /work/SRC/openSUSE:12.1/.libstorage.new/libstorage.changes 2011-11-05 11:49:28.000000000 +0100 @@ -1,0 +2,8 @@ +Thu Nov 3 10:55:36 CET 2011 - fehr@suse.de + +- 2.21.14 +- fix fstab handling when mount-by-uuid is reformatted (bnc#728000) +- add local static struct to getContVolInfo to prevent strings + from being freed while perl interface might still access them + +------------------------------------------------------------------- Old: ---- libstorage-2.21.13.tar.bz2 New: ---- libstorage-2.21.14.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libstorage.spec ++++++ --- /var/tmp/diff_new_pack.tvuaOH/_old 2011-11-05 11:49:28.000000000 +0100 +++ /var/tmp/diff_new_pack.tvuaOH/_new 2011-11-05 11:49:28.000000000 +0100 @@ -19,7 +19,7 @@ Name: libstorage -Version: 2.21.13 +Version: 2.21.14 Release: 0 License: GPL Group: System/Libraries ++++++ libstorage-2.21.13.tar.bz2 -> libstorage-2.21.14.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-2.21.13/VERSION new/libstorage-2.21.14/VERSION --- old/libstorage-2.21.13/VERSION 2011-10-31 18:46:39.000000000 +0100 +++ new/libstorage-2.21.14/VERSION 2011-11-03 16:49:19.000000000 +0100 @@ -1 +1 @@ -2.21.13 +2.21.14 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-2.21.13/storage/Storage.cc new/libstorage-2.21.14/storage/Storage.cc --- old/libstorage-2.21.13/storage/Storage.cc 2011-10-25 16:24:38.000000000 +0200 +++ new/libstorage-2.21.14/storage/Storage.cc 2011-11-03 10:40:00.000000000 +0100 @@ -5079,10 +5079,11 @@ int Storage::getContVolInfo(const string& device, ContVolInfo& info) { + static ContVolInfo s_info; // workaround for broken ycp bindings int ret = STORAGE_VOLUME_NOT_FOUND; ConstContIterator c; ConstVolIterator v; - info.ctype = CUNKNOWN; + s_info.ctype = CUNKNOWN; assertInit(); if (findVolume(device, c, v)) { @@ -5095,23 +5096,24 @@ findVolume(b->device(), c, v, true); } } - info.ctype = c->type(); - info.cname = c->name(); - info.cdevice = c->device(); - info.vname = v->name(); - info.vdevice = v->device(); + s_info.ctype = c->type(); + s_info.cname = c->name(); + s_info.cdevice = c->device(); + s_info.vname = v->name(); + s_info.vdevice = v->device(); if( v->isNumeric() ) - info.num = v->nr(); + s_info.num = v->nr(); } else if (findContainer(device, c)) { ret = 0; - info.ctype = c->type(); - info.cname = c->name(); - info.cdevice = c->device(); - info.vname = ""; - info.vdevice = ""; + s_info.ctype = c->type(); + s_info.cname = c->name(); + s_info.cdevice = c->device(); + s_info.vname = ""; + s_info.vdevice = ""; } + info = s_info; y2mil("device:" << device << " ret:" << ret << " cname:" << info.cname << " vname:" << info.vname); return ret; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-2.21.13/storage/Volume.cc new/libstorage-2.21.14/storage/Volume.cc --- old/libstorage-2.21.13/storage/Volume.cc 2011-10-26 14:08:29.000000000 +0200 +++ new/libstorage-2.21.14/storage/Volume.cc 2011-11-03 13:42:51.000000000 +0100 @@ -539,9 +539,7 @@ if (!entry.fs_uuid.empty()) { - uuid = entry.fs_uuid; - alt_names.remove_if(string_contains("/by-uuid/")); - alt_names.push_back("/dev/disk/by-uuid/" + uuid); + updateUuid(entry.fs_uuid); } if (!entry.fs_label.empty()) @@ -917,6 +915,13 @@ return( ret ); } +void Volume::updateUuid( const string& new_uuid ) + { + uuid = new_uuid; + alt_names.remove_if(string_contains("/by-uuid/")); + alt_names.push_back("/dev/disk/by-uuid/" + uuid); + } + int Volume::doFormat() { static int fcount=1000; @@ -1084,6 +1089,10 @@ if( ret==0 ) { triggerUdevUpdate(); + Blkid blkid(mountDevice()); + Blkid::Entry entry; + if( findBlkid( blkid, entry ) && entry.is_fs && !entry.fs_uuid.empty()) + updateUuid( entry.fs_uuid ); } if( ret==0 && !orig_mp.empty() ) { @@ -2735,6 +2744,7 @@ else if( l ) ret = l->loopFile(); } + y2mil( "dev:" << dev << " ret:" << ret ); return( ret ); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-2.21.13/storage/Volume.h new/libstorage-2.21.14/storage/Volume.h --- old/libstorage-2.21.13/storage/Volume.h 2011-08-09 13:37:05.000000000 +0200 +++ new/libstorage-2.21.14/storage/Volume.h 2011-11-03 13:43:23.000000000 +0100 @@ -218,6 +218,7 @@ void getLoopData( SystemCmd& loopData ); void getMountData(const ProcMounts& mounts, bool swap_only = false); void getFstabData( EtcFstab& fstabData ); + void updateUuid( const string& new_uuid ); void replaceAltName( const string& prefix, const string& newn ); string getMountByString() const; string getFstabDevice() const; -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org