{
  "slug": "ata-read-look-ahead",
  "term": "ATA read look-ahead",
  "aliases": [
    "ATA read lookahead",
    "Drive read look-ahead"
  ],
  "definition": "ATA read look-ahead is a drive-controlled read-prefetch feature, separate from operating-system readahead and the drive's write-cache setting.",
  "note": "The hdparm controls differ by case: -a selects a software filesystem readahead sector count, whereas -A selects the drive feature. Changing one does not configure the other layer. [hdparm-lookahead]\n\nSET FEATURES uses command opcode 0xEF with feature selector 0xAA to enable read look-ahead or 0x55 to disable it. Write-cache selectors 0x02 and 0x82 are separate; a read-prefetch change is not a write-cache flush. [ata-lookahead-bits] [wd-lookahead]\n\nIDENTIFY word 82 bit 6 reports support; word 85 bit 6 reports enablement. Linux v6.12 checks the validity pattern in word 87 before interpreting that enable bit. Neither field measures fetched bytes, cache hits or application latency. [ata-identify-fields] [ata-lookahead-bits]\n\nThe cited product manual says these settings revert to defaults after power cycling. That is a documented product behavior, not a guarantee about every ATA device or reset type. [wd-lookahead]",
  "status": "shipping",
  "advantages": [],
  "limitations": [
    {
      "text": "A host command path may not expose every device setting; enclosure and kernel compatibility matter.",
      "citationIds": [
        "hdparm-lookahead"
      ]
    }
  ],
  "related": [
    "sata",
    "readahead",
    "write-back-cache"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-11-14",
  "citations": [
    {
      "id": "hdparm-lookahead",
      "title": "hdparm(8): separate -a software readahead and -A drive read-lookahead controls",
      "url": "https://www.man7.org/linux/man-pages/man8/hdparm.8.html",
      "accessed": "2026-11-14"
    },
    {
      "id": "ata-lookahead-bits",
      "title": "Linux v6.12 ata.h: SET FEATURES selectors and ata_id_rahead_enabled validity check",
      "url": "https://github.com/torvalds/linux/blob/v6.12/include/linux/ata.h",
      "accessed": "2026-11-14"
    },
    {
      "id": "ata-identify-fields",
      "title": "Linux v6.12 hdreg.h: IDENTIFY words 82 and 85, support versus enabled state",
      "url": "https://github.com/torvalds/linux/blob/v6.12/include/uapi/linux/hdreg.h",
      "accessed": "2026-11-14"
    },
    {
      "id": "wd-lookahead",
      "title": "WD Purple Pro PR18 manual D018-000157-AA00: Tables 4-6 and 4-7, pages 36-37 and 41",
      "url": "https://documents.westerndigital.com/content/dam/doc-library/en_us/assets/public/western-digital/product/internal-drives/wd-purple-hdd/technical-ref-manual-wd-purple-hdd-18tb.pdf",
      "accessed": "2026-11-14"
    },
    {
      "id": "hesela-sata",
      "title": "Hesela: SATA command and cache-policy boundaries",
      "url": "https://hesela.com/tech/sata/",
      "accessed": "2026-11-14"
    }
  ],
  "provenance": [
    "Documentation and version-pinned Linux source review; no device command, cache-hit measurement or performance experiment was performed.",
    "The power-cycle statement is limited to the WD Purple Pro PR18 manual. No universal default or reset-persistence behavior is inferred."
  ]
}
