@@ -407,7 +407,8 @@ ZTEST_F(zms, test_zms_cycle_count_persistence)
407407 int err ;
408408 uint32_t base_cycles ;
409409 uint32_t num_cycles_before ;
410- uint32_t num_cycles_after ;
410+ uint32_t num_cycles_after_clear ;
411+ uint32_t num_cycles_after_remount ;
411412 const uint32_t advances = 6 ;
412413
413414 fixture -> fs .sector_count = 3 ;
@@ -429,17 +430,32 @@ ZTEST_F(zms, test_zms_cycle_count_persistence)
429430 "cycle count did not advance: before=%u base=%u" , num_cycles_before ,
430431 base_cycles );
431432
433+ /* zms_clear must not roll the cycle counter back: the per-sector
434+ * full_cycle_cnt is preserved (and bumped) by zms_wipe_partition.
435+ */
436+ err = zms_clear (& fixture -> fs );
437+ zassert_true (err == 0 , "zms_clear failed: %d" , err );
438+
439+ err = zms_mount (& fixture -> fs );
440+ zassert_true (err == 0 , "zms_mount (after clear) call failure: %d" , err );
441+
442+ err = zms_get_num_cycles (& fixture -> fs , & num_cycles_after_clear );
443+ zassert_true (err == 0 , "zms_get_num_cycles failed: %d" , err );
444+ zassert_true (num_cycles_after_clear >= num_cycles_before ,
445+ "cycle count regressed across zms_clear: before=%u after=%u" ,
446+ num_cycles_before , num_cycles_after_clear );
447+
432448 /* Re-mount and ensure the cycle count survives, exercising the
433- * full_cycle_cnt persistence path fixed in 6aa5edc5/6db9fd35 .
449+ * full_cycle_cnt persistence path.
434450 */
435451 err = zms_mount (& fixture -> fs );
436452 zassert_true (err == 0 , "zms_mount (remount) call failure: %d" , err );
437453
438- err = zms_get_num_cycles (& fixture -> fs , & num_cycles_after );
454+ err = zms_get_num_cycles (& fixture -> fs , & num_cycles_after_remount );
439455 zassert_true (err == 0 , "zms_get_num_cycles failed: %d" , err );
440- zassert_equal (num_cycles_after , num_cycles_before ,
441- "cycle count not persisted across remount: before =%u after =%u" ,
442- num_cycles_before , num_cycles_after );
456+ zassert_equal (num_cycles_after_remount , num_cycles_after_clear ,
457+ "cycle count not persisted across remount: after_clear =%u after_remount =%u" ,
458+ num_cycles_after_clear , num_cycles_after_remount );
443459}
444460
445461static void write_content (uint32_t max_id , uint32_t begin , uint32_t end , struct zms_fs * fs )
0 commit comments