Darryl L. Pierce
2009-May-26 19:08 UTC
[Ovirt-devel] [PATCH node] Fixes when more than one UDI is returned while getting a drive's size.
If more than one UDI is returned, they are delimited by a carriage return. That is changed to a space, then the lot is iterated over. Each UDI is tested to see if it has the property "block.is_volume=false". If so then that UDI is for the underlying block device and not a logical volume on the device. Signed-off-by: Darryl L. Pierce <dpierce at redhat.com> --- scripts/ovirt-config-storage | 17 ++++++++++++++++- 1 files changed, 16 insertions(+), 1 deletions(-) diff --git a/scripts/ovirt-config-storage b/scripts/ovirt-config-storage index 716b8fb..296ec8c 100755 --- a/scripts/ovirt-config-storage +++ b/scripts/ovirt-config-storage @@ -43,6 +43,21 @@ get_drive_size() local size local udi=$(hal-find-by-property --key block.device --string $drive) + # if more than one UDI was found then iterate over them to find the base device + if [[ "${udi}" =~ \$ ]]; then + printf "MORE THAN ONE UDI FOUND!\n" + udi=$(echo $udi | sed 's/\$/ /g') + printf "UDI is now '${udi}'\n" + for found in ${udi}; do + printf "CHECKING: ${found}\n" + printf "$(hal-device ${found})\n" + if [[ "false" == $(hal-get-property --udi $found --key block.is_volume) ]]; then + printf "*** BINGO! ***\n" + udi=$found + break + fi + done + fi if [ -z "$udi" ]; then # If hal didn't find the device, it could be a virtio block device # In this case, use sfdisk -s to get the size @@ -50,7 +65,7 @@ get_drive_size() size=$(echo "scale=0; $size * 1024" | bc -l) else size=$(hal-get-property --udi "$udi" --key storage.size) - if [ $size -eq 0 ]; then + if [[ "${size}" == "0" ]]; then # disk is probably hot-swappable, use different HAL key size=$(hal-get-property --udi "$udi" --key storage.removable.media_size) fi -- 1.6.0.6
Reasonably Related Threads
- [PATCH node] Fixes when a removable media is removed. bz#507455
- [PATCH] Replace the HAL calls with udev/systool calls.
- [PATCH node] Handle space in storage wwid
- [PATCH node] This is a follow-on patch for bz#507455.
- [PATCH node] display descriptions for all disks