DF-2633 / manifest.json
{ "finding_id": "DF-2633", "title": "hammer2 write() silently succeeds while backend allocation fails on full PFS (ENOSPC never reaches the writer)", "verdict": "reproduced", "impact": "dos", "reproduce": { "build": "cc -O2 -o write2633 write2633.c && cc -O2 -o phase2 phase2.c && cc -O2 -o verify2633 verify2633.c", "run": "sh run_planD.sh", "expected": "stock: FILL_FSYNC rc=0 while 'xop_strategy_write: error 32' floods the console unbounded (213/s); umount EBUSY forever; crash leaves the fs empty (silent loss). fixed: FILL_FSYNC rc=-1 errno=28, retries all ENOSPC, console 1 line/s, healthy images unaffected" }, "kernel_refs": [ "sys/vfs/hammer2/hammer2_strategy.c:670-681", "sys/vfs/hammer2/hammer2_strategy.c:1310-1356", "sys/vfs/hammer2/hammer2_vnops.c:216-276", "sys/vfs/hammer2/hammer2_vnops.c:854-864", "sys/vfs/hammer2/hammer2_inode.c:1743-1767", "sys/vfs/hammer2/hammer2_vfsops.c:3076-3127" ], "artifacts": [ "README.md", "VERDICT.md", "write2633.c", "phase2.c", "verify2633.c", "run_df2633.sh", "run_planD.sh", "validate_fix.sh", "build.sh", "run.sh", "stock_run.attempt1.log", "planD.log", "phase2_run2.log", "storm_measurements.txt", "umount_hang.attempt1.log", "postcrash_verify.log", "control_roundtrip.log", "control_healthy.log", "fix_validation.log", "fix_run.log", "fix_run_roundtrip.log", "build.log", "fix_build.log", "env.txt", "fix.diff", "verdict.json", "manifest.json" ] } |