8db279a4d8
cube(2): a refusal with two minus signs is not a refusal — and the walk it hung
surface-camera-build2026-09-23 22:42:36 -04:00
fc057820fa
store: refuse a store that cannot be read — and the proof that the refusal is not the whole defect
surface-camera-build2026-09-23 22:02:22 -04:00
9fb4169e52
store: refuse a device that does not carry the packed image's magic (inert, NOT installed)
surface-camera-build2026-09-23 21:15:53 -04:00
4cfdbfe63b
store: a get on the first slice of a chain returns the whole value
surface-camera-build2026-09-23 19:59:57 -04:00
e0218ec96b
store: one fsync per append, not two — and torn-tail is the gate that decided it
surface-camera-build2026-09-23 19:25:34 -04:00
b3dc55392e
read: the log window is cached with the table — the last device read a read made for nothing
surface-camera-build2026-09-23 18:41:36 -04:00
b8a7f615ff
read: validate the store in 96 bytes, and hold the layout with the table
surface-camera-build2026-09-23 18:37:23 -04:00
1f7b9fe0de
read: hold the space table across calls, keyed on the generation
surface-camera-build2026-09-23 18:05:55 -04:00
aab316a9a1
read: take the log window instead of copying it, and name the boot class bit
surface-camera-build2026-09-23 17:53:38 -04:00
e968b3964e
store: a write reads the log, not the whole device — and the log is now bounded
surface-camera-build2026-09-23 17:32:05 -04:00
daa6289e2d
cube(2): the walk skips the records the cursor already returned
surface-camera-build2026-09-23 01:32:55 -04:00
e53ae04033
cubelinux: hold the store lock across the whole op, not inside append
CUBELinux2026-09-22 23:32:18 -04:00
7938966d6a
cubelinux: initialise STORE_FILE, the mutex that was never initialised
CUBELinux2026-09-22 21:10:12 -04:00
88ce1bf2bf
cubelinux: CUBE_OP_RANGE — a region walk that seeks on the box's key span
surface-camera-build2026-09-21 19:44:48 -04:00
72a6bbe173
cubelinux: the key and the span move into the shared file, and the driver stops having its own
surface-camera-build2026-09-21 18:19:36 -04:00