v6
2026-09-18
修复 MF_DELAYED 误判致命信号 · v6
修正 MF_DELAYED:允许 truncate_error_folio 返回该状态,统一 extra_pins 处理,并新增 shmem 内存故障自测。
原始补丁链接
子 Patch(5)
1/5
mm: memory_failure: Clarify the MF_DELAYED definition
澄清 MF_DELAYED 表示 folio 移除已启动但未完成,仍有元数据引用,避免后续把延迟回收误判为失败。
2/5
mm: memory_failure: Allow truncate_error_folio to return MF_DELAYED
让 truncate_error_folio 透传 .error_remove_folio 的 MF_DELAYED,避免转成 MF_FAILED 后 memory_failure 返回 -EBUSY 并强制 SIGBUS,忽略 kill policy。
3/5
mm: shmem: Update shmem handler to the MF_DELAYED definition
shmem_error_remove_folio 改返回 MF_DELAYED,如实表示 shmem 延迟截断;此前因 filemap_release_folio 空操作被误判 MF_RECOVERED,修正后 action_result 行为不变。
4/5
mm: memory_failure: Generalize extra_pins handling to all MF_DELAYED cases
memory_failure 中凡 MF_DELAYED 即置 extra_pins=true,不再仅判 shmem_mapping;因为延迟回收的 filemap 仍持 folio 引用,避免多余引用误判。
5/5
mm: selftests: Add shmem into memory failure test
在 selftests/mm 增加 shmem 内存故障测试,覆盖脏/干净与硬/软离线,验证修改后 SIGBUS 触发及重读行为符合预期。