[Ovirt-devel] [PATCH node] support for cciss disk devices

Alan Pevec apevec at redhat.com
Fri Mar 13 17:29:46 UTC 2009


assumption that partition is ${DRIVE}2 fails with cciss where we have
e.g. /dev/cciss/c0d0p2 for 2nd partition on the first cciss disk.
Fix is to try ${DRIVE}2 then ${DRIVE}p2. This makes
ovirt_init=/dev/cciss/c0d0 work.
NB: ovirt_init=scsi does not work, cciss are not reported as scsi devices.

Signed-off-by: Alan Pevec <apevec at redhat.com>
---
 scripts/ovirt-config-boot    |    6 ++++++
 scripts/ovirt-config-storage |   38 +++++++++++++++++++++++++++++---------
 2 files changed, 35 insertions(+), 9 deletions(-)

diff --git a/scripts/ovirt-config-boot b/scripts/ovirt-config-boot
index 2661cd9..0462c13 100755
--- a/scripts/ovirt-config-boot
+++ b/scripts/ovirt-config-boot
@@ -26,12 +26,14 @@ ovirt_boot_setup() {
     local live=$1
     local bootparams=$2
     local disk
+    local disk2
     local partN=-1
     log "installing oVirt Node image."
     mount_boot
     # check that /boot mounted ok and find partition number for GRUB
     eval $(mount|awk '$3 == "/boot" {
         print "disk=" substr($1,1,length($1)-1);
+        print "disk2=" substr($1,1,length($1)-2);
         partN=substr($1,length($1),1); partN--;
         print "partN=" partN;
     }')
@@ -40,6 +42,10 @@ ovirt_boot_setup() {
       log "boot partition not available."
       return 1
     fi
+    if [ ! -e "$disk" ]; then
+        # e.g. c0d0p1
+        disk="$disk2"
+    fi
     mkdir -p /liveos
     # prepare Root partition update
     candidate=
diff --git a/scripts/ovirt-config-storage b/scripts/ovirt-config-storage
index d8c93e0..c92b931 100755
--- a/scripts/ovirt-config-storage
+++ b/scripts/ovirt-config-storage
@@ -92,8 +92,14 @@ check_partition_sizes()
 
     # check if an existing HostVG exists on a device other than the target
     for vg in $(pvdisplay -c); do
-	eval $(echo $vg | awk '{match($0, "^([^:]*):([^:]*)", data); print "device="data[1]" name="data[2]}')
-	if [ "$name" == "HostVG" -a "${device:0:8}" != "$DRIVE" ]; then
+        device=
+        name=
+        eval $(echo $vg | awk -F: '
+/'$DRIVE'/ !~ $1 && $2=="HostVG" {
+    gsub("^ *","",$1);
+    print "device="$1" name="$2
+}')
+	if [ "$name" == "HostVG" ]; then
 	    udi=$(hal-find-by-property --key block.device --string $device)
 	    name=$(hal-get-property --udi $udi --key storage.serial)
 	    printf "\n"
@@ -324,18 +330,32 @@ perform_partitioning()
         gptsync $DRIVE
     fi
 
+    partboot=${DRIVE}1
+    partpv=${DRIVE}2
+    if [ ! -e "$partpv" ]; then
+        # e.g. /dev/cciss/c0d0p2
+        partboot=${DRIVE}p1
+        partpv=${DRIVE}p2
+    fi
     log "Creating physical volume"
-    dd if=/dev/zero of=${DRIVE}2 bs=1024k count=1
-    pvcreate -f "${DRIVE}2"
-    pvck -v
+    if [ ! -e "$partpv" ]; then
+        log "$partpv is not available!"
+        exit 1
+    fi
+    dd if=/dev/zero of=${partpv} bs=1024k count=1
+    pvcreate -f "${partpv}"
     log "Creating volume group"
-    vgcreate /dev/HostVG "${DRIVE}2"
+    vgcreate /dev/HostVG "${partpv}"
 
     log "Creating boot filesystem"
-    mke2fs -j "${DRIVE}1" -L "BOOT"
-    tune2fs -c 0 -i 0 "${DRIVE}1"
+    if [ ! -e "$partboot" ]; then
+        log "$partboot is not available!"
+        exit 1
+    fi
+    mke2fs -j "${partboot}" -L "BOOT"
+    tune2fs -c 0 -i 0 "${partboot}"
     mkdir -p /dev/disk/by-label
-    ln -snf "${DRIVE}1" /dev/disk/by-label/BOOT
+    ln -snf "${partboot}" /dev/disk/by-label/BOOT
 
     if [ "$SWAP_SIZE" -gt 0 ]; then
         log "Creating swap partition"
-- 
1.6.0.6




More information about the ovirt-devel mailing list