mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 04:18:39 +08:00
mm: add folio_end_read()
Provide a function for filesystems to call when they have finished reading an entire folio. Link: https://lkml.kernel.org/r/20231004165317.1061855-4-willy@infradead.org Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Cc: Albert Ou <aou@eecs.berkeley.edu> Cc: Alexander Gordeev <agordeev@linux.ibm.com> Cc: Andreas Dilger <adilger.kernel@dilger.ca> Cc: Christian Borntraeger <borntraeger@linux.ibm.com> Cc: Christophe Leroy <christophe.leroy@csgroup.eu> Cc: Geert Uytterhoeven <geert@linux-m68k.org> Cc: Heiko Carstens <hca@linux.ibm.com> Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru> Cc: Matt Turner <mattst88@gmail.com> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Nicholas Piggin <npiggin@gmail.com> Cc: Palmer Dabbelt <palmer@dabbelt.com> Cc: Paul Walmsley <paul.walmsley@sifive.com> Cc: Richard Henderson <richard.henderson@linaro.org> Cc: Sven Schnelle <svens@linux.ibm.com> Cc: "Theodore Ts'o" <tytso@mit.edu> Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de> Cc: Vasily Gorbik <gor@linux.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
f45b494e2a
commit
0b237047d5
@ -1101,6 +1101,7 @@ static inline void wait_on_page_locked(struct page *page)
|
||||
folio_wait_locked(page_folio(page));
|
||||
}
|
||||
|
||||
void folio_end_read(struct folio *folio, bool success);
|
||||
void wait_on_page_writeback(struct page *page);
|
||||
void folio_wait_writeback(struct folio *folio);
|
||||
int folio_wait_writeback_killable(struct folio *folio);
|
||||
|
22
mm/filemap.c
22
mm/filemap.c
@ -1525,6 +1525,28 @@ void folio_unlock(struct folio *folio)
|
||||
}
|
||||
EXPORT_SYMBOL(folio_unlock);
|
||||
|
||||
/**
|
||||
* folio_end_read - End read on a folio.
|
||||
* @folio: The folio.
|
||||
* @success: True if all reads completed successfully.
|
||||
*
|
||||
* When all reads against a folio have completed, filesystems should
|
||||
* call this function to let the pagecache know that no more reads
|
||||
* are outstanding. This will unlock the folio and wake up any thread
|
||||
* sleeping on the lock. The folio will also be marked uptodate if all
|
||||
* reads succeeded.
|
||||
*
|
||||
* Context: May be called from interrupt or process context. May not be
|
||||
* called from NMI context.
|
||||
*/
|
||||
void folio_end_read(struct folio *folio, bool success)
|
||||
{
|
||||
if (likely(success))
|
||||
folio_mark_uptodate(folio);
|
||||
folio_unlock(folio);
|
||||
}
|
||||
EXPORT_SYMBOL(folio_end_read);
|
||||
|
||||
/**
|
||||
* folio_end_private_2 - Clear PG_private_2 and wake any waiters.
|
||||
* @folio: The folio.
|
||||
|
Loading…
Reference in New Issue
Block a user