@@ -330,6 +330,16 @@ struct TestMigration : public TestFixture {
330330 ASSERT_EQ (0 , m_ictx->operations ->resize (size, true , no_op));
331331 }
332332
333+ void test_children (bool have, std::string initial_image_name) {
334+ std::vector<librbd::linked_image_spec_t > images;
335+ librbd::ImageCtx *initial_ictx = nullptr ;
336+ open_image (m_ioctx, initial_image_name, &initial_ictx);
337+ EXPECT_EQ (0 , librbd::api::Image<>::snap_set (
338+ initial_ictx, cls::rbd::UserSnapshotNamespace (), " snap" ));
339+ ASSERT_EQ (0 , librbd::api::Image<>::list_children (initial_ictx, &images));
340+ ASSERT_EQ (have, !images.empty ());
341+ }
342+
333343 void test_no_snaps () {
334344 uint64_t len = (1 << m_ictx->order ) * 2 + 1 ;
335345 write (0 * len, len, ' 1' );
@@ -1051,16 +1061,41 @@ TEST_F(TestMigration, CloneUpdateAfterPrepare)
10511061{
10521062 REQUIRE_FEATURE (RBD_FEATURE_LAYERING);
10531063
1064+ auto initial_image_name = m_image_name;
1065+
1066+ write (0 , 10 , ' X' );
1067+ snap_create (" snap" );
1068+ clone (" snap" );
1069+
1070+ migration_prepare (m_ioctx, m_image_name);
1071+
1072+ write (0 , 1 , ' Y' );
1073+
1074+ test_children (true , initial_image_name);
1075+ migration_execute (m_ioctx, m_image_name);
1076+ migration_commit (m_ioctx, m_image_name);
1077+ test_children (true , initial_image_name);
1078+ }
1079+
1080+ TEST_F (TestMigration, CloneFlatten)
1081+ {
1082+ REQUIRE_FEATURE (RBD_FEATURE_LAYERING);
1083+
1084+ auto initial_image_name = m_image_name;
1085+
10541086 write (0 , 10 , ' X' );
10551087 snap_create (" snap" );
10561088 clone (" snap" );
10571089
1090+ ASSERT_EQ (0 , m_opts.set (RBD_IMAGE_OPTION_FLATTEN, 1 ));
10581091 migration_prepare (m_ioctx, m_image_name);
10591092
10601093 write (0 , 1 , ' Y' );
10611094
1095+ test_children (true , initial_image_name);
10621096 migration_execute (m_ioctx, m_image_name);
10631097 migration_commit (m_ioctx, m_image_name);
1098+ test_children (false , initial_image_name);
10641099}
10651100
10661101TEST_F (TestMigration, TriggerAssertSnapcSeq)
0 commit comments