test_status_in_pool_dir ${CLUSTER1} ${POOL} ${clone_image} 'up+replaying' 'master_position'
compare_images ${POOL} ${clone_image}
+expect_failure "is non-primary" clone_image ${CLUSTER1} ${PARENT_POOL} \
+ ${parent_image} ${parent_snap} ${POOL} ${clone_image}1
+
testlog "TEST: disable mirroring / delete non-primary image"
image2=test2
image3=test3
echo $(date '+%F %T') $@ | tee -a "${TEMPDIR}/rbd-mirror.test.log"
}
+expect_failure()
+{
+ local expected="$1" ; shift
+ local out=${TEMPDIR}/expect_failure.out
+
+ if "$@" > ${out} 2>&1 ; then
+ cat ${out} >&2
+ return 1
+ fi
+
+ if [ -z "${expected}" ]; then
+ return 0
+ fi
+
+ if ! grep -q "${expected}" ${out} ; then
+ cat ${out} >&2
+ return 1
+ fi
+
+ return 0
+}
+
setup()
{
local c
return -EINVAL;
}
+ if ((p_features & RBD_FEATURE_JOURNALING) != 0) {
+ bool force_non_primary = !non_primary_global_image_id.empty();
+ bool is_primary;
+ int r = Journal<>::is_tag_owner(p_imctx, &is_primary);
+ if (r < 0) {
+ lderr(cct) << "failed to determine tag ownership: " << cpp_strerror(r)
+ << dendl;
+ return r;
+ }
+ if (!is_primary && !force_non_primary) {
+ lderr(cct) << "parent is non-primary mirrored image" << dendl;
+ return -EINVAL;
+ }
+ }
+
if (use_p_features) {
c_opts.set(RBD_IMAGE_OPTION_FEATURES, p_features);
}