onenand_recover_lsb(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… onenand_recover_lsb β€” the Flex-OneNAND LSB page glow-up πŸ’…

Okay so this is onenand_recover_lsb(9) from the Kernel API Manual, and bestie, it's a whole rescue mission arc. Buckle up πŸŽ€


✨ NAME ✨

onenand_recover_lsb β€” [Flex-OneNAND] Recover LSB page data. That's it, that's the vibe. She recovers. She's the recovery friend. 🫢


🌸 SYNOPSIS 🌸

int onenand_recover_lsb (struct mtd_info *mtd , loff_t addr , int status
);

Yes the formatting is a little chaotic, no we are not fixing it, she's iconic as she is πŸ’…


πŸ¦‹ ARGUMENTS πŸ¦‹

  • mtd β€” the MTD device structure. The whole device. The main character, honestly πŸ‘‘
  • addr β€” the address you wanna recover. Like, the exact spot. Not a general area, the spot πŸ“
  • status β€” the return value from onenand_wait / onenand_bbt_wait. Basically the receipts from whoever waited on this thing πŸ‘€

🌈 DESCRIPTION 🌈

Okay so here's the lore πŸ“–βœ¨

MLC NAND Flash cells have paired pages β€” there's an LSB page and an MSB page, and they're literally besties. They're paired. The LSB page has the lower page address and the MSB page has the higher page address within those paired pages. The way that they're arranged... it's giving matched set πŸŽ€

So here's the tragic part 😭 If power off happens during MSB page program, the paired LSB page data can become corrupt. Like, not even the LSB page's fault, she just got caught in it. Collateral damage, fr fr πŸ’€

LSB page recovery read is the way to read the LSB page even though the page data are corrupted. She reads through the chaos. Main character energy 🌟

And the actual rule: when an uncorrectable error occurs as a result of an LSB page read after power up, you issue an LSB page recovery read. That's it. That's the whole move. No cap πŸ”₯

Bestie pls note: this isn't a "just do it whenever" situation β€” it's specifically for that uncorrectable error on LSB page read after power up scenario. Read the room 😌

πŸ’– SEE ALSO πŸ’–

Kernel file ./drivers/mtd/nand/onenand/onenand_base.c β€” that's where the source lives, go say hi to her 🏠

And the whole extended friend group, in order, no skips, no cuts πŸ™ˆ:

onenand_readw(9), onenand_writew(9), onenand_block_address(9), onenand_bufferram_address(9), onenand_page_address(9), onenand_buffer_address(9), flexonenand_block(9), flexonenand_addr(9), onenand_get_density(9), flexonenand_region(9), onenand_command(9), onenand_read_ecc(9), onenand_wait(9), onenand_bufferram_offset(9), onenand_read_bufferram(9), onenand_sync_read_bufferram(9), onenand_write_bufferram(9), onenand_get_2x_blockpage(9), onenand_check_bufferram(9), onenand_update_bufferram(9), onenand_invalidate_bufferram(9), onenand_get_device(9), onenand_release_device(9), onenand_transfer_auto_oob(9), onenand_mlc_read_ops_nolock(9), onenand_read_ops_nolock(9), onenand_read_oob_nolock(9), onenand_read_oob(9), onenand_bbt_wait(9), onenand_bbt_read_oob(9), onenand_verify_oob(9), onenand_verify(9), onenand_panic_write(9), onenand_fill_auto_oob(9), onenand_write_ops_nolock(9), onenand_write_oob_nolock(9), onenand_write_oob(9), onenand_block_isbad_nolock(9), onenand_multiblock_erase(9), onenand_block_by_block_erase(9), onenand_erase(9), onenand_sync(9), onenand_block_isbad(9), onenand_default_block_markbad(9), onenand_block_markbad(9), onenand_do_lock_cmd(9), onenand_lock(9), onenand_unlock(9), onenand_check_lock_status(9), onenand_unlock_all(9), onenand_otp_command(9), onenand_otp_write_oob_nolock(9), do_otp_read(9), do_otp_write(9), do_otp_lock(9), onenand_otp_walk(9), onenand_get_fact_prot_info(9), onenand_read_fact_prot_reg(9), onenand_get_user_prot_info(9), onenand_read_user_prot_reg(9), onenand_write_user_prot_reg(9), onenand_lock_user_prot_reg(9), onenand_check_features(9), onenand_print_device_info(9), onenand_check_maf(9), flexonenand_get_boundary(9), flexonenand_get_size(9), flexonenand_check_blocks_erased(9), onenand_chip_probe(9), onenand_probe(9), onenand_suspend(9), onenand_resume(9), onenand_scan(9), onenand_release(9)

That's the whole group chat and yes you're expected to know all of them πŸ’€βœ¨


Okay bye bestie, that's the page 🫢 This one lives in ./drivers/mtd/nand/onenand, dated October 2026, and it's the onenand_recover_lsb(9) entry in the Kernel API Manual β€” slay, go recover some pages πŸ’…βœ¨πŸŽ€

πŸ“¦ where this page comes from