Mailinglist Archive: yast-devel (128 mails)

< Previous Next >
Re: [yast-devel] Problem with lvm on hardware raid
  • From: Thomas Fehr <fehr@xxxxxxx>
  • Date: Thu, 18 Feb 2010 12:52:39 +0100
  • Message-id: <20100218115239.GC2378@xxxxxxx>
On Wed, Feb 17, Arvin Schnell wrote:

On Wed, Feb 17, 2010 at 08:05:13PM +0100, Christian Ehrlicher wrote:

We've a similar problem like described in bug #231221 ( ). Yast can't create a
logical volume and fails with error -4017 (LVM_PV_STILL_ADDED)
--> /dev/block/104:3 needs a mapping to /dev/cciss/c0d0p3

It's correctly detected:
"dev_names":["/dev/cciss/c0d0", "/dev/block/104:0", "/dev/disk/by-
id/cciss-3600508b1001052395359305442350500", "/dev/disk/by-
path/pci-0000:06:00.0", "/dev/disk/by-id/edd-int13_dev80"]
I can provide the full y2log - but it's huge and therefore I decided to
append the error part.

When I'm correct I need to add an additional check for /dev/cciss in
Storage::findVolume() ( - is this correct?

The normal way is to add "/dev/block/104:3" to the alt_names of
the partition, e.g. in the constructor of Partition. Major and
Minor number should already be read in the Volume constructor.

If so - how can I add a modified libstorage to my install source (we're
doing a
network install)? We need to install 9 servers with this raid controller
our plan was to use autoyast for this...

You can make a new RPM of libstorage and add it as a driver
update (dud) in linuxrc, see

Attached patch should fix your problem.
We will have a more robust solution for next openSuSE but this should
do for now.

Thomas Fehr
Thomas Fehr, SuSE Linux Products GmbH, Maxfeldstr. 5, 90409 Nuernberg, Germany
GF: Markus Rex, HRB 16746 (AG N├╝rnberg)
Tel: +49-911-74053-0, Fax: +49-911-74053-482, Email: fehr@xxxxxxx
GPG public key available.
diff --git a/storage/ b/storage/
index 712cb3c..b83fbdb 100644
--- a/storage/
+++ b/storage/
@@ -219,7 +219,17 @@ void Volume::init()
if (!getStorage()->testmode() && cType()!=NFSC)
+ {
+ if( mjr!=0 )
+ {
+ std::ostringstream b;
+ classic(b);
+ b << "/dev/block/" << mjr << ':' << mnr;
+ alt_names.remove_if( string_contains("/block/") );
+ alt_names.push_back( b.str() );
+ }
+ }
if( !numeric )
num = 0;
< Previous Next >