新增map绑定转储诊断(dhara_map_find+裸读绑定页):跨boot对比定界树分歧与数据丢失

This commit is contained in:
2026-09-20 10:48:47 +08:00
parent 7d6f431d68
commit 66fc48cd98
4 changed files with 310 additions and 0 deletions
+9
View File
@@ -274,6 +274,10 @@ void StartDefaultTask(void *argument)
nand_ftl_set_tree_probe(0);
if (hfr != FR_OK) {
nand_ftl_scan_checks(); /* 诊断:环上 checkpoint 的 epoch 分布 */
/* 诊断:本 boot(复位后)树绑定 + 绑定页裸读内容 */
nand_ftl_dump_binding(0, "postreset");
nand_ftl_dump_binding(15, "postreset");
nand_ftl_dump_binding(16, "postreset");
}
if (hfr != FR_OK) {
if (hfr == FR_DENIED || hfr == FR_INVALID_OBJECT ||
@@ -297,6 +301,11 @@ void StartDefaultTask(void *argument)
nand_ftl_log_state("[after-mkfs]");
if (fr == FR_OK) {
DBG_INFO("[FS] volume reformatted OK");
/* 诊断:重格式化后树绑定 + 绑定页裸读内容(与下次
* boot 的 postreset 对比:地址分歧=树问题,内容变化=数据丢失) */
nand_ftl_dump_binding(0, "fresh");
nand_ftl_dump_binding(15, "fresh");
nand_ftl_dump_binding(16, "fresh");
} else {
DBG_ERROR("[FS] volume repair failed (fr=%d)", (int)fr);
syslog_post(SYSLOG_SELFTEST, "storage fault");