STRUCT NAND_ECC_REQ_TWEAK_CTX(9)
π NAME π
okay so bestie, welcome to the Kernel API Manual β¨ β this page is all about struct nand_ecc_req_tweak_ctx, and its whole personality is: help for automatically tweaking requests. that's it, that's the vibe π
πΈ SYNOPSIS πΈ
struct nand_ecc_req_tweak_ctx {
struct nand_page_io_req orig_req;
struct nand_device *nand;
unsigned int page_buffer_size;
unsigned int oob_buffer_size;
void *spare_databuf;
void *spare_oobbuf;
bool bounce_data;
bool bounce_oob;
};
π MEMBERS π
orig_reqβ a pointer to the original IO request π like the before picture of the whole glow-upnandβ the related NAND device, so we can peek at its memory organization π¦ iykyk, you need the layout deetspage_buffer_sizeβ the real size of the page buffer to use. plot twist: the user can set this before the tweaking mechanism initialization πoob_buffer_sizeβ the real size of the OOB buffer to use. and yes, same deal β settable by the user before the tweaking mechanism initialization πspare_databufβ the data bounce buffer π literally its job is to bouncespare_oobbufβ the OOB bounce buffer, same energy, different buffer π«Άbounce_dataβ flag saying a data bounce buffer is in use βbounce_oobβ flag saying an OOB bounce buffer is in use β
π¦ SEE ALSO π¦
bestie there is so much lore here, go read these next, no cap π
- Kernel file
./include/linux/mtd/nand.hstruct nand_memory_organization(9)struct nand_row_converter(9)struct nand_pos(9)enum nand_page_io_req_type(9)struct nand_page_io_req(9)enum nand_ecc_engine_type(9)enum nand_ecc_placement(9)enum nand_ecc_algo(9)struct nand_ecc_props(9)struct nand_bbt(9)struct nand_ops(9)struct nand_ecc_context(9)struct nand_ecc_engine_ops(9)enum nand_ecc_engine_integration(9)struct nand_ecc_engine(9)struct nand_ecc(9)struct nand_device(9)struct nand_io_iter(9)mtd_to_nanddev(9)nanddev_to_mtd(9)nanddev_page_size(9)nanddev_per_page_oobsize(9)nanddev_pages_per_eraseblock(9)nanddev_pages_per_target(9)nanddev_eraseblocks_per_lun(9)nanddev_eraseblocks_per_target(9)nanddev_target_size(9)nanddev_neraseblocks(9)nanddev_size(9)nanddev_get_memorg(9)nanddev_get_ecc_conf(9)nanddev_get_ecc_nsteps(9)nanddev_get_ecc_bytes_per_step(9)nanddev_get_ecc_requirements(9)nanddev_set_ecc_requirements(9)nanddev_register(9)nanddev_unregister(9)nanddev_set_of_node(9)nanddev_get_of_node(9)nanddev_offs_to_pos(9)nanddev_pos_cmp(9)nanddev_pos_to_offs(9)nanddev_pos_to_row(9)nanddev_pos_next_target(9)nanddev_pos_next_lun(9)nanddev_pos_next_eraseblock(9)nanddev_pos_next_page(9)nanddev_bbt_pos_to_entry(9)nanddev_bbt_is_initialized(9)
okay that's the whole page, you ate that π
this lil baddie lives in ./include/linux/mtd, dropped October 2026 (yes she's from the future, main character energy fr fr) β mwah, go read the source bestie, ily π§π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms