nand_bbm_get_next_page(9)
πΈ nand_bbm_get_next_page πΈ
okay so this is a page straight out of the Kernel API Manual, and honestly? it's a little icon. it's short, it's sweet, it's giving "one job and it does it." let's get into it bestie π
β¨ NAME β¨
nand_bbm_get_next_page β get the next page for bad block markers π
like, that's the whole mission statement. we find bad block markers, we tell you which page they live on, done. periodt.
π§ SYNOPSIS π§
int nand_bbm_get_next_page (struct nand_chip *chip , int page );
that's the whole signature, no cap. two args, returns an int. slay.
π«Ά ARGUMENTS π«Ά
chipβ the NAND chip object π this is the chip we're poking at, our main character.pageβ the first page to start checking for bad block marker usage π¦ like, where you want the search to begin. your starting point, your opening scene.
π DESCRIPTION π
so what does it actually do? it returns an integer that corresponds to the page offset within a block, for a page that is used to store bad block markers. literally that's it, that's the vibe. you ask for the next page, it hands you the offset of a page that's out here holding bad block marker data π₯
but β and this is the important part, don't skip it β if no more pages are available, -EINVAL is returned π so if you get -EINVAL back, that's not a bug bestie, that's the function telling you there's nothing left to check. the audacity, but also, fair.
ngl, -EINVAL here means "no more pages," not "you passed something cursed." just so we're clear π
π₯ SEE ALSO π₯
the kernel file that matters here is ./drivers/mtd/nand/raw/nand_base.c β that's the home base π and then there's the guest list, which is, um. enormous. like, the whole NAND extended family showed up to this party π every single one of these, in the order the original rolled them out:
nand_extract_bits(9)nand_select_target(9)nand_deselect_target(9)nand_release_device(9)nand_block_bad(9)nand_region_is_secured(9)nand_get_device(9)nand_check_wp(9)nand_fill_oob(9)nand_do_write_oob(9)nand_default_block_markbad(9)nand_markbad_bbm(9)nand_block_markbad_lowlevel(9)nand_block_isreserved(9)nand_block_checkbad(9)nand_soft_waitrdy(9)nand_gpio_waitrdy(9)panic_nand_wait(9)nand_reset_interface(9)nand_setup_interface(9)nand_choose_best_sdr_timings(9)nand_choose_best_nvddr_timings(9)nand_choose_best_timings(9)nand_choose_interface_config(9)nand_fill_column_cycles(9)nand_read_page_op(9)nand_read_param_page_op(9)nand_change_read_column_op(9)nand_read_oob_op(9)nand_prog_page_begin_op(9)nand_prog_page_end_op(9)nand_prog_page_op(9)nand_change_write_column_op(9)nand_readid_op(9)nand_status_op(9)nand_exit_status_op(9)nand_erase_op(9)nand_set_features_op(9)nand_get_features_op(9)nand_reset_op(9)nand_read_data_op(9)nand_write_data_op(9)struct nand_op_parser_ctx(9)nand_op_parser_must_split_instr(9)nand_op_parser_match_pat(9)nand_op_parser_exec_op(9)nand_subop_get_addr_start_off(9)nand_subop_get_num_addr_cyc(9)nand_subop_get_data_start_off(9)nand_subop_get_data_len(9)nand_reset(9)nand_get_features(9)nand_set_features(9)nand_read_page_raw_notsupp(9)nand_read_page_raw(9)nand_monolithic_read_page_raw(9)nand_read_page_raw_syndrome(9)nand_read_page_swecc(9)nand_read_subpage(9)nand_read_page_hwecc(9)nand_read_page_hwecc_oob_first(9)nand_read_page_syndrome(9)nand_transfer_oob(9)nand_setup_read_retry(9)nand_do_read_ops(9)nand_read_oob_std(9)nand_read_oob_syndrome(9)nand_write_oob_std(9)nand_write_oob_syndrome(9)nand_do_read_oob(9)nand_read_oob(9)nand_write_page_raw_notsupp(9)nand_write_page_raw(9)nand_monolithic_write_page_raw(9)nand_write_page_raw_syndrome(9)nand_write_page_swecc(9)nand_write_page_hwecc(9)nand_write_subpage_hwecc(9)nand_write_page_syndrome(9)nand_write_page(9)nand_do_write_ops(9)panic_nand_write(9)nand_write_oob(9)nand_erase(9)nand_erase_nand(9)nand_sync(9)nand_block_isbad(9)nand_block_markbad(9)nand_suspend(9)nand_resume(9)nand_shutdown(9)nand_lock(9)nand_unlock(9)rawnand_dt_parse_gpio_cs(9)nand_scan_ident(9)nand_check_ecc_caps(9)nand_match_ecc_req(9)nand_maximize_ecc(9)nand_ecc_choose_conf(9)nand_scan_tail(9)nand_scan_with_ids(9)nand_cleanup(9)
like I said. the whole family π every auntie and cousin got an invite. respect the guest list.
π sign-off π
and that's the page, bestie!! sourced from ./drivers/mtd/nand/raw, stamped October 2026, and officially titled nand_bbm_get_next_page(9) in the Kernel API Manual β go forth and check those bad block markers, iykyk ππ¦β¨
π¦ 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