fix: MINT-ZUSE says the stick was erased when it was (#168)
failed() printed "MINT-ZUSE: failed -- nothing changed" on every failure after YES, though by then gpt_write_one() had rewritten the stick's partition table and the identity partition's first blocks had been zeroed. gpt_write_one() now tells the two apart: GPT_EIO when its first write failed (nothing written), GPT_PART when a later write or flush failed (the disk is changed). MINT-ZUSE keeps "failed -- nothing changed" for GPT_EIO only, and says "failed -- the stick was erased; Zuse not minted" for every failure after the table is written. The marker is still written last. Tested first, seen to fail: qemu_session.py mint_part_fail (writes fail only at the identity partition's first sector, LBA 2048) -- "nothing changed", logs/20261112-122132. After: mint_part_fail PASS; mint_fail (every write fails) still "nothing changed", PASS; replace (the success path) PASS. Their logs here. FABRIC-3 XLVIII.20. Captain Bob, 2026-11-12: "start #168". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017RzZgrf7V7Zk2iczBXDRbm
This commit is contained in:
@@ -24,7 +24,8 @@ typedef struct {
|
||||
#define GPT_OK 0 /* a valid GPT */
|
||||
#define GPT_NONE 1 /* not a GPT disk -- no protective MBR -- (or one whose sectors are not 512 bytes): read it raw */
|
||||
#define GPT_BAD 2 /* a protective MBR, but its header or entry array does not check out: not used */
|
||||
#define GPT_EIO 3 /* its first block could not be read: not used */
|
||||
#define GPT_EIO 3 /* its first block could not be read: not used; gpt_write_one: nothing was written */
|
||||
#define GPT_PART 4 /* gpt_write_one only: a write failed after others were made -- the disk is changed (#168) */
|
||||
|
||||
/* Read `disk`'s protective MBR, primary GPT header and partition-entry array,
|
||||
* checking both CRC-32s, the revision, the sizes and the geometry. On GPT_OK,
|
||||
@@ -59,7 +60,10 @@ int gpt_grow_last(blkio_dev_t *disk, const uint8_t type[16], uint64_t max_part_s
|
||||
* entries, the backup header and entries at the disk's end, the protective
|
||||
* MBR written last (the old one zeroed first, so a write torn anywhere leaves
|
||||
* no table). Nothing inside the partition is written. GPT_OK; GPT_BAD for a
|
||||
* disk whose sectors are not 512 bytes or that is too small; GPT_EIO. */
|
||||
* disk whose sectors are not 512 bytes or that is too small (nothing written);
|
||||
* GPT_EIO when its first write failed (nothing written, the disk as it was);
|
||||
* GPT_PART when a later write or a flush failed (the disk is changed: its old
|
||||
* table is gone). The caller says which (#168). */
|
||||
int gpt_write_one(blkio_dev_t *disk, const uint8_t type[16], uint64_t part_sectors, uint8_t disk_guid[16]);
|
||||
|
||||
/* The index of the first partition of `type`, or -1. */
|
||||
|
||||
Reference in New Issue
Block a user