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
... | ... |
@@ -399,6 +399,10 @@ function init_cinder { |
399 | 399 |
be_type=${be%%:*} |
400 | 400 |
be_name=${be##*:} |
401 | 401 |
if type init_cinder_backend_${be_type} >/dev/null 2>&1; then |
402 |
+ # Always init the default volume group for lvm. |
|
403 |
+ if [[ "$be_type" == "lvm" ]]; then |
|
404 |
+ init_default_lvm_volume_group |
|
405 |
+ fi |
|
402 | 406 |
init_cinder_backend_${be_type} ${be_name} |
403 | 407 |
fi |
404 | 408 |
done |
... | ... |
@@ -117,6 +117,25 @@ function init_lvm_volume_group { |
117 | 117 |
_clean_lvm_volume_group $vg |
118 | 118 |
} |
119 | 119 |
|
120 |
+# Sentinal value to ensure that init of default lvm volume group is |
|
121 |
+# only performed once across calls of init_default_lvm_volume_group. |
|
122 |
+_DEFAULT_LVM_INIT=${_DEFAULT_LVM_INIT:-0} |
|
123 |
+ |
|
124 |
+# init_default_lvm_volume_group() initializes a default volume group |
|
125 |
+# intended to be shared between cinder and nova. It is idempotent; |
|
126 |
+# the init of the default volume group is guaranteed to be performed |
|
127 |
+# only once so that either or both of the dependent services can |
|
128 |
+# safely call this function. |
|
129 |
+# |
|
130 |
+# Usage: init_default_lvm_volume_group() |
|
131 |
+function init_default_lvm_volume_group { |
|
132 |
+ if [[ "$_DEFAULT_LVM_INIT" = "0" ]]; then |
|
133 |
+ init_lvm_volume_group $DEFAULT_VOLUME_GROUP_NAME $VOLUME_BACKING_FILE_SIZE |
|
134 |
+ _DEFAULT_LVM_INIT=1 |
|
135 |
+ fi |
|
136 |
+} |
|
137 |
+ |
|
138 |
+ |
|
120 | 139 |
# Restore xtrace |
121 | 140 |
$MY_XTRACE |
122 | 141 |
|
... | ... |
@@ -939,10 +939,6 @@ init_service_check |
939 | 939 |
# A better kind of sysstat, with the top process per time slice |
940 | 940 |
start_dstat |
941 | 941 |
|
942 |
-# Initialize default LVM volume group |
|
943 |
-# ----------------------------------- |
|
944 |
-init_lvm_volume_group $DEFAULT_VOLUME_GROUP_NAME $VOLUME_BACKING_FILE_SIZE |
|
945 |
- |
|
946 | 942 |
# Start Services |
947 | 943 |
# ============== |
948 | 944 |
|