Init default lvm volume group only if required

A recent patch [1] added support for lvm ephemeral storage for nova,
but at the cost of initializing a default lvm volume group even if it
was not required.  This change ensures that init of the default volume
group is only performed when nova and/or cinder are configured to use
lvm.

1: https://review.openstack.org/#/c/132333

Change-Id: I7634ca0ed0ffe1b13464e4d66744918f85149f2e
Closes-Bug: #1414820
This commit is contained in:
Maru Newby 2015-01-27 17:44:44 +00:00
parent 4764cffd5a
commit c070a3dbb5
4 changed files with 27 additions and 4 deletions

View File

@ -399,6 +399,10 @@ function init_cinder {
be_type=${be%%:*} be_type=${be%%:*}
be_name=${be##*:} be_name=${be##*:}
if type init_cinder_backend_${be_type} >/dev/null 2>&1; then 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} init_cinder_backend_${be_type} ${be_name}
fi fi
done done

19
lib/lvm
View File

@ -117,6 +117,25 @@ function init_lvm_volume_group {
_clean_lvm_volume_group $vg _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 # Restore xtrace
$MY_XTRACE $MY_XTRACE

View File

@ -640,6 +640,10 @@ function init_nova {
create_nova_cache_dir create_nova_cache_dir
create_nova_keys_dir create_nova_keys_dir
if [[ "$NOVA_BACKEND" == "LVM" ]]; then
init_default_lvm_volume_group
fi
} }
# install_novaclient() - Collect source and prepare # install_novaclient() - Collect source and prepare

View File

@ -939,10 +939,6 @@ init_service_check
# A better kind of sysstat, with the top process per time slice # A better kind of sysstat, with the top process per time slice
start_dstat start_dstat
# Initialize default LVM volume group
# -----------------------------------
init_lvm_volume_group $DEFAULT_VOLUME_GROUP_NAME $VOLUME_BACKING_FILE_SIZE
# Start Services # Start Services
# ============== # ==============