folio_put_wait_locked(9)
π¦ folio_put_wait_locked(9) π¦
okay so bestie, we are in the Kernel API Manual, and this is the page for folio_put_wait_locked(9) β the little helper that drops a ref and then waits for the unlock. No cap, it's a tiny but iconic function. β¨
πΈ NAME πΈ
folio_put_wait_lockedβ drops a reference and waits for it to be unlocked π
β¨ SYNOPSIS β¨
int folio_put_wait_locked (struct folio *folio , int state );
π ARGUMENTS π
folioβ the folio youβre waiting for. Thatβs the main character of this page π«Άstateβ the sleep state (TASK_KILLABLE,TASK_UNINTERRUPTIBLE, etc). Pick your nap vibe π΄
π DESCRIPTION π
The caller should hold a reference on folio. Periodt. They expect the page to become unlocked relatively soon, but they do not want to hold up migration (for example) by holding that reference while waiting for the folio to come unlocked. So the move is: drop the reference, wait for the unlock, and keep it moving.
After this function returns, the caller should not dereference folio. Like, not even once. It's giving βwe are so done hereβ π
π₯ RETURN π₯
It returns 0 if the folio was unlocked or -EINTR if interrupted by a signal. Slay.
π SEE ALSO π
Kernel file ./mm/filemap.c, plus the whole squad:
filemap_remove_folio(9)filemap_fdatawrite_range(9)filemap_flush_range(9)filemap_flush(9)filemap_range_has_page(9)filemap_fdatawait_range(9)filemap_fdatawait_range_keep_errors(9)file_fdatawait_range(9)filemap_fdatawait_keep_errors(9)filemap_write_and_wait_range(9)file_check_and_advance_wb_err(9)file_write_and_wait_range(9)replace_page_cache_folio(9)softleaf_entry_wait_on_locked(9)folio_unlock(9)folio_end_read(9)folio_end_private_2(9)folio_wait_private_2(9)folio_wait_private_2_killable(9)folio_end_writeback_no_dropbehind(9)folio_end_writeback(9)__folio_lock(9)page_cache_next_miss(9)page_cache_prev_miss(9)__filemap_get_folio_mpol(9)find_get_entries(9)find_lock_entries(9)filemap_get_folios(9)filemap_get_folios_contig(9)filemap_get_folios_tag(9)filemap_get_folios_dirty(9)filemap_read(9)generic_file_read_iter(9)filemap_splice_read(9)mapping_seek_hole_data(9)filemap_fault(9)read_cache_folio(9)mapping_read_folio_gfp(9)read_cache_page_gfp(9)__generic_file_write_iter(9)generic_file_write_iter(9)filemap_release_folio(9)filemap_invalidate_inode(9)filemap_cachestat(9)
mwah π β from the ./mm source tree, October 2026, with folio_put_wait_locked(9) signing off β¨
π¦ 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