Applying and passing the OSD_BLUESTORE/FILESTORE on the fly is wrong for
existing clusters as their config will be changed.
Typically, if an OSD was prepared with ceph-disk on filestore and we
change the default objectstore to bluestore, the activation will fail.
The flag osd_objectstore should only be used for the preparation, not
activation. The activate in this case detects the osd objecstore which
prevents failures like the one described above.
Signed-off-by: Sébastien Han <seb@redhat.com>
(cherry picked from commit
4c5113019893c92c4d75c9fc457b04158b86398b)
expose_partitions "$1"
+# discover osd_objectstore for ceph-disk based osds
+if [[ $DOCKER_ENV =~ "BLUESTORE" ]]; then
+ DOCKER_ENV="$DOCKER_ENV -e OSD_BLUESTORE=1"
+elif [[ $DOCKER_ENV =~ "JOURNAL" ]]; then
+ DOCKER_ENV="$DOCKER_ENV -e OSD_FILESTORE=1"
+fi
+
{% endif -%}
-e KV_IP={{ kv_endpoint }} \
-e KV_PORT={{ kv_port }} \
{% endif -%}
- {% if osd_objectstore == 'filestore' and not dmcrypt -%}
- -e OSD_FILESTORE=1 \
- -e OSD_DMCRYPT=0 \
- {% endif -%}
- {% if osd_objectstore == 'filestore' and dmcrypt -%}
- -e OSD_FILESTORE=1 \
+ {% if dmcrypt -%}
-e OSD_DMCRYPT=1 \
- {% endif -%}
- {% if osd_objectstore == 'bluestore' and not dmcrypt -%}
- -e OSD_BLUESTORE=1 \
+ {% else -%}
-e OSD_DMCRYPT=0 \
{% endif -%}
- {% if osd_objectstore == 'bluestore' and dmcrypt -%}
- -e OSD_BLUESTORE=1 \
- -e OSD_DMCRYPT=1 \
- {% endif -%}
-e CLUSTER={{ cluster }} \
{% if (ceph_tcmalloc_max_total_thread_cache | int) > 0 and osd_objectstore == 'filestore' -%}
-e TCMALLOC_MAX_TOTAL_THREAD_CACHE_BYTES={{ ceph_tcmalloc_max_total_thread_cache }} \