diff --git a/lib/cinder b/lib/cinder index 1bc6ddd7c5..08f5874563 100644 --- a/lib/cinder +++ b/lib/cinder @@ -393,6 +393,10 @@ function init_cinder { fi if type init_cinder_backend_${be_type} >/dev/null 2>&1; then + # Always init the default volume group for lvm. + if [[ "$be_type" == "lvm" ]]; then + init_default_lvm_volume_group + fi init_cinder_backend_${be_type} ${be_name} fi done diff --git a/lib/lvm b/lib/lvm index 4ef260d593..ed24487c5f 100644 --- a/lib/lvm +++ b/lib/lvm @@ -117,6 +117,25 @@ function init_lvm_volume_group { _clean_lvm_volume_group $vg } +# Sentinal value to ensure that init of default lvm volume group is +# only performed once across calls of init_default_lvm_volume_group. +_DEFAULT_LVM_INIT=${_DEFAULT_LVM_INIT:-0} + +# init_default_lvm_volume_group() initializes a default volume group +# intended to be shared between cinder and nova. It is idempotent; +# the init of the default volume group is guaranteed to be performed +# only once so that either or both of the dependent services can +# safely call this function. +# +# Usage: init_default_lvm_volume_group() +function init_default_lvm_volume_group { + if [[ "$_DEFAULT_LVM_INIT" = "0" ]]; then + init_lvm_volume_group $DEFAULT_VOLUME_GROUP_NAME $VOLUME_BACKING_FILE_SIZE + _DEFAULT_LVM_INIT=1 + fi +} + + # Restore xtrace $MY_XTRACE diff --git a/lib/nova b/lib/nova index 76212edc96..a4b1bb15dc 100644 --- a/lib/nova +++ b/lib/nova @@ -640,6 +640,10 @@ function init_nova { create_nova_cache_dir create_nova_keys_dir + + if [[ "$NOVA_BACKEND" == "LVM" ]]; then + init_default_lvm_volume_group + fi } # install_novaclient() - Collect source and prepare diff --git a/stack.sh b/stack.sh index d3d54cc699..198a347071 100755 --- a/stack.sh +++ b/stack.sh @@ -918,10 +918,6 @@ init_service_check # A better kind of sysstat, with the top process per time slice start_dstat -# Initialize default LVM volume group -# ----------------------------------- -init_lvm_volume_group $DEFAULT_VOLUME_GROUP_NAME $VOLUME_BACKING_FILE_SIZE - # Start Services # ==============