grab_cache_page_nowait(9)
π grab_cache_page_nowait(9) π
okay so this is a page straight out of the Kernel API Manual and honestly? she's a baddie. her whole thing is grabbing you a locked page at an index in a cache and she does not wait around for anybody. periodt. β¨
πΈ SYNOPSIS πΈ
struct page * grab_cache_page_nowait (struct address_space *mapping ,
pgoff_t index );
like literally that's the whole signature bestie, no cap π«Ά
π ARGUMENTS π
mappingβ the targetaddress_space. that's the cache she's gonna go shopping in ποΈindexβ the page index, aka where in that cache your fave page lives π
β¨ DESCRIPTION β¨
bestie. listen. this function returns a locked page at the given index in the given cache, and it'll create it if it needs to β but here's the iconique part: it does not wait if the page is locked, and it does not wait to reclaim memory. not me showing up, not getting what I want, and leaving ππ
it's built for speculative data generators β the kind where, if the page couldn't be grabbed, the data can just be regenerated. no drama, no hard feelings, we move. π₯
the way this is safe to call while you're holding the lock for another page?? main character energy fr fr π
also lowkey important: it clears __GFP_FS when allocating the page so you don't recurse back into the fs and deadlock against the caller's locked page π like that's the whole reason, don't skip it.
ngl the "don't wait" part is the whole vibe β if you need waiting, this is not your girl π
π SEE ALSO π
she's got a whole friend group and they're all in the Kernel file ./include/linux/pagemap.h β go say hi π¦
filemap_set_wb_err(9)filemap_check_wb_err(9)filemap_sample_wb_err(9)file_sample_sb_err(9)mapping_set_error(9)mapping_set_large_folios(9)mapping_align_index(9)mapping_pmd_folio_support(9)folio_flush_mapping(9)folio_inode(9)folio_attach_private(9)folio_change_private(9)folio_detach_private(9)fgf_t(9)fgf_set_order(9)write_begin_get_folio(9)filemap_get_folio(9)filemap_lock_folio(9)filemap_grab_folio(9)find_get_page(9)find_lock_page(9)find_or_create_page(9)folio_next_index(9)folio_next_pos(9)folio_file_page(9)folio_contains(9)page_pgoff(9)folio_pos(9)linear_page_delta(9)linear_page_index(9)linear_anon_page_index(9)folio_trylock(9)folio_lock(9)lock_page(9)folio_lock_killable(9)filemap_range_needs_writeback(9)struct readahead_control(9)page_cache_sync_readahead(9)page_cache_async_readahead(9)readahead_folio(9)readahead_pos(9)readahead_length(9)readahead_index(9)readahead_count(9)readahead_batch_length(9)folio_mkwrite_check_truncate(9)i_blocks_per_folio(9)
mwah π this page shipped from ./include/linux, dated October 2026, and she ate, no crumbs. go grab a page (or don't wait for one) ππ§
π¦ 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