Skip to content

Hesela / Research library

Research & analyses

Storage engineering, examined through sources, measurements and reproducible methods.

133 analyses · Page 2 of 5

Newest first
  1. 2026-10-16 / Analysis

    Why deleted NFS files become .nfs files

    Silly rename, open-file preservation and a misleading Linux comment: trace NFS deletion from the 1985 paper to a pinned implementation and RFC erratum.

  2. 2026-10-15 / Analysis

    Btrfs tree logs: why a read-only mount can still replay writes

    Separate Btrfs fsync logging, transaction commit, read-only mount recovery and destructive log clearing, with a reproducible Linux 6.15/6.16 option audit.

  3. 2026-10-15 / Analysis

    F2FS: when a successful fsync is not a recovery promise

    A pinned Linux source audit separates F2FS checkpoints, roll-forward recovery and the fsync success path when checkpointing is disabled.

  4. 2026-10-15 / Analysis

    Fast file clones: where the copying cost goes

    Separate reflinks, hard links and in-kernel copies; trace deferred costs, Btrfs maintenance, shared-space accounting and FAST 2020's research limits.

  5. 2026-10-15 / Source review

    NVMe multipath: ANA access states and Linux path policies

    Separate NVMe namespace identity from ANA access states: NSID scope, identifier lifetime, Linux path policies and controller-level queue accounting.

  6. 2026-10-15 / Source review

    Optical disc lifetime: error thresholds, percentiles and uncertainty

    Optical-disc lifetime is not a warranty: CD/DVD error units, survival estimates, Blu-ray HTL/LTH, and a source-level check of M-DISC longevity claims.

  7. 2026-10-15 / Source review

    Soft updates: consistent metadata without a full journal

    Why write ordering can leave reclaimable space instead of unsafe pointers, and why background fsck and metadata consistency do not prove application durability.

  8. 2026-10-15 / Source review

    XFS delayed logging: which commit is durable?

    Separate XFS commit from persistence, relogging from deferred recovery, and journal atomicity from online visibility.

  9. 2026-10-14 / Source review

    Ext4 journal replay: why old writes must sometimes be skipped

    JBD2 replay, checksum failure paths and ambiguous log tails, with source-checked recovery boundaries and reproducible counterexamples.

  10. 2026-10-14 / Source review

    Filesystem aging: the state SSD warm-up does not describe

    Separate filesystem layout history, free-space fragmentation and SSD conditioning, with three USENIX studies and a reproducible allocation counterexample.

  11. 2026-10-14 / Source review

    io_uring: completion is not a durable commit

    io_uring write ordering, protection information, cancellation CQEs and linked timeouts: what each result proves, and what still needs synchronization.

  12. 2026-10-14 / Source review

    RocksDB: a WAL sync is not a memtable flush

    RocksDB WAL sync, flush, tracking, snapshots and backups: which recovery boundary each crosses, and why a successful open need not prove completeness.

  13. 2026-10-14 / Analysis

    SMB handles and leases: reconnect is not write durability

    Durable and persistent SMB handles, caching leases and write-through protect different boundaries. Learn what to verify after a disconnect or failover.

  14. 2026-10-14 / Analysis

    SQLite WAL checkpoint starvation: success is not completion

    Measured SQLite WAL checkpoints, stale-snapshot retries and read-only contracts: why successful SQL or integrity_check does not prove completion or freshness.

  15. 2026-10-14 / Source review

    ZFS ZIL and SLOG: the boundary between logging and persistence

    ZIL, SLOG and transaction groups protect different boundaries. Pinned OpenZFS code explains indirect records, sync settings and misleading log-byte counters.

  16. 2026-10-13 / Analysis

    Backup verification is not a restore test

    Separate backup completion, integrity, freshness and usable recovery, with reproducible SQLite and rsync experiments and explicit limits.

  17. 2026-10-13 / Analysis

    O_DIRECT alignment: query the file, not a fixed block size

    Query O_DIRECT per-file alignment and distinguish cache hints, prefetch, NOWAIT and mincore residency from actual I/O and durable writes.

  18. 2026-10-13 / Source review

    Parity declustering: less load per disk, not fewer reads

    An executable eight-disk example separates repair-read volume, survivor load and stripe width, with evidence from ASPLOS, Panasas and OpenZFS dRAID.

  19. 2026-10-13 / Source review

    Persistent memory: DAX is not a durable commit

    ADR, eADR and MAP_SYNC protect different boundaries. A source-linked review and executable crash-state example separate addressability, visibility, persistence and atomicity.

  20. 2026-10-13 / Source review

    Reed-Solomon recovery needs more than a fragment count

    Exact GF(7) examples separate MDS recovery, missing fragments and silent corruption, showing why even a unique decoded answer can be wrong.

  21. 2026-10-13 / Analysis

    Replica repair: what has actually converged?

    Replica repair coverage, quorum overlap and set reconciliation: why matching keys, successful responses and compact summaries do not prove identical durable state.

  22. 2026-10-13 / Analysis

    Snapshots and backups: which failures can you recover from?

    Separate snapshot consistency, independent recovery copies and RPO/RTO targets, with source-backed OpenZFS, PostgreSQL and VSS examples.

  23. 2026-10-13 / Source review

    Sparse files, preallocation and thin-pool capacity

    File size, allocated blocks and thin-pool headroom are different measurements. Learn what preallocation, hole punching and zero-filled reads actually establish.

  24. 2026-10-12 / Source review

    512e, 4Kn and alignment: geometry is not durability

    Separate logical and physical sectors, partition starts and individual writes. Four reproducible examples show why aligned partitions do not guarantee whole-sector I/O.

  25. 2026-10-12 / Source review

    Bloom filters: optimize the lookup, not each filter

    LSM lookup costs, filter retention and counting limits, with reproducible allocation, deletion and memory examples grounded in primary sources.

  26. 2026-10-12 / Source review

    Content-defined chunking: boundaries are not identity

    Reproducible FastCDC examples show how file framing, parameter changes and terminal chunks alter measured reuse, even when file contents remain unchanged.

  27. 2026-10-12 / Source review

    Crash-consistency tests: the oracle is part of the result

    What ALICE, CrashMonkey/ACE, SQLite and Ananke actually test: fault boundaries, separate recovery outcomes and an executable correctness-oracle example.

  28. 2026-10-12 / Analysis

    GitLab's 2017 database loss: reconciling the incident records

    GitLab's public records give conflicting loss-window endpoints and rough impact estimates for the 31 January 2017 database incident. The later postmortem describes partial recovery from surviving Git repositories. Comparing these accounts clarifies which figures describe initial impact, which describe recovery, and where the final losses remain unknown.

  29. 2026-10-12 / Source review

    Key-value separation: the cleaning bill moves elsewhere

    WiscKey, HashKV and BlobDB separate value movement from key sorting. A reproducible byte model shows when value-log cleaning can erase the saving.

  30. 2026-10-12 / Analysis

    Linux atomic writes: untorn does not mean durable

    Atomic writes, durable completion and powersafe overwrite protect different boundaries. Check Linux request geometry and SQLite's outside-range assumption.