@@ -332,6 +332,16 @@ struct TestMigration : public TestFixture {
332332 ASSERT_EQ (0 , m_ictx->operations ->resize (size, true , no_op));
333333 }
334334
335+ void test_children (bool have, std::string initial_image_name) {
336+ std::vector<librbd::linked_image_spec_t > images;
337+ librbd::ImageCtx *initial_ictx = nullptr ;
338+ open_image (m_ioctx, initial_image_name, &initial_ictx);
339+ EXPECT_EQ (0 , librbd::api::Image<>::snap_set (
340+ initial_ictx, cls::rbd::UserSnapshotNamespace (), " snap" ));
341+ ASSERT_EQ (0 , librbd::api::Image<>::list_children (initial_ictx, &images));
342+ ASSERT_EQ (have, !images.empty ());
343+ }
344+
335345 void test_no_snaps () {
336346 uint64_t len = (1 << m_ictx->order ) * 2 + 1 ;
337347 write (0 * len, len, ' 1' );
@@ -1053,16 +1063,41 @@ TEST_F(TestMigration, CloneUpdateAfterPrepare)
10531063{
10541064 REQUIRE_FEATURE (RBD_FEATURE_LAYERING);
10551065
1066+ auto initial_image_name = m_image_name;
1067+
1068+ write (0 , 10 , ' X' );
1069+ snap_create (" snap" );
1070+ clone (" snap" );
1071+
1072+ migration_prepare (m_ioctx, m_image_name);
1073+
1074+ write (0 , 1 , ' Y' );
1075+
1076+ test_children (true , initial_image_name);
1077+ migration_execute (m_ioctx, m_image_name);
1078+ migration_commit (m_ioctx, m_image_name);
1079+ test_children (true , initial_image_name);
1080+ }
1081+
1082+ TEST_F (TestMigration, CloneFlatten)
1083+ {
1084+ REQUIRE_FEATURE (RBD_FEATURE_LAYERING);
1085+
1086+ auto initial_image_name = m_image_name;
1087+
10561088 write (0 , 10 , ' X' );
10571089 snap_create (" snap" );
10581090 clone (" snap" );
10591091
1092+ ASSERT_EQ (0 , m_opts.set (RBD_IMAGE_OPTION_FLATTEN, 1 ));
10601093 migration_prepare (m_ioctx, m_image_name);
10611094
10621095 write (0 , 1 , ' Y' );
10631096
1097+ test_children (true , initial_image_name);
10641098 migration_execute (m_ioctx, m_image_name);
10651099 migration_commit (m_ioctx, m_image_name);
1100+ test_children (false , initial_image_name);
10661101}
10671102
10681103TEST_F (TestMigration, TriggerAssertSnapcSeq)
0 commit comments