Skip to content

Commit b5612c3

Browse files
Matthew Wilcox (Oracle)akpm00
authored andcommitted
mm: return void from folio_start_writeback() and related functions
Nobody now checks the return value from any of these functions, so add an assertion at the beginning of the function and return void. Link: https://lkml.kernel.org/r/[email protected] Signed-off-by: Matthew Wilcox (Oracle) <[email protected]> Reviewed-by: Josef Bacik <[email protected]> Cc: David Howells <[email protected]> Cc: Steve French <[email protected]> Signed-off-by: Andrew Morton <[email protected]>
1 parent a9540e3 commit b5612c3

File tree

3 files changed

+29
-33
lines changed

3 files changed

+29
-33
lines changed

include/linux/page-flags.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -772,8 +772,8 @@ static __always_inline void SetPageUptodate(struct page *page)
772772

773773
CLEARPAGEFLAG(Uptodate, uptodate, PF_NO_TAIL)
774774

775-
bool __folio_start_writeback(struct folio *folio, bool keep_write);
776-
bool set_page_writeback(struct page *page);
775+
void __folio_start_writeback(struct folio *folio, bool keep_write);
776+
void set_page_writeback(struct page *page);
777777

778778
#define folio_start_writeback(folio) \
779779
__folio_start_writeback(folio, false)

mm/folio-compat.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ void mark_page_accessed(struct page *page)
4646
}
4747
EXPORT_SYMBOL(mark_page_accessed);
4848

49-
bool set_page_writeback(struct page *page)
49+
void set_page_writeback(struct page *page)
5050
{
51-
return folio_start_writeback(page_folio(page));
51+
folio_start_writeback(page_folio(page));
5252
}
5353
EXPORT_SYMBOL(set_page_writeback);
5454

mm/page-writeback.c

Lines changed: 25 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2982,67 +2982,63 @@ bool __folio_end_writeback(struct folio *folio)
29822982
return ret;
29832983
}
29842984

2985-
bool __folio_start_writeback(struct folio *folio, bool keep_write)
2985+
void __folio_start_writeback(struct folio *folio, bool keep_write)
29862986
{
29872987
long nr = folio_nr_pages(folio);
29882988
struct address_space *mapping = folio_mapping(folio);
2989-
bool ret;
29902989
int access_ret;
29912990

2991+
VM_BUG_ON_FOLIO(folio_test_writeback(folio), folio);
2992+
29922993
folio_memcg_lock(folio);
29932994
if (mapping && mapping_use_writeback_tags(mapping)) {
29942995
XA_STATE(xas, &mapping->i_pages, folio_index(folio));
29952996
struct inode *inode = mapping->host;
29962997
struct backing_dev_info *bdi = inode_to_bdi(inode);
29972998
unsigned long flags;
2999+
bool on_wblist;
29983000

29993001
xas_lock_irqsave(&xas, flags);
30003002
xas_load(&xas);
3001-
ret = folio_test_set_writeback(folio);
3002-
if (!ret) {
3003-
bool on_wblist;
3003+
folio_test_set_writeback(folio);
30043004

3005-
on_wblist = mapping_tagged(mapping,
3006-
PAGECACHE_TAG_WRITEBACK);
3005+
on_wblist = mapping_tagged(mapping, PAGECACHE_TAG_WRITEBACK);
30073006

3008-
xas_set_mark(&xas, PAGECACHE_TAG_WRITEBACK);
3009-
if (bdi->capabilities & BDI_CAP_WRITEBACK_ACCT) {
3010-
struct bdi_writeback *wb = inode_to_wb(inode);
3011-
3012-
wb_stat_mod(wb, WB_WRITEBACK, nr);
3013-
if (!on_wblist)
3014-
wb_inode_writeback_start(wb);
3015-
}
3007+
xas_set_mark(&xas, PAGECACHE_TAG_WRITEBACK);
3008+
if (bdi->capabilities & BDI_CAP_WRITEBACK_ACCT) {
3009+
struct bdi_writeback *wb = inode_to_wb(inode);
30163010

3017-
/*
3018-
* We can come through here when swapping
3019-
* anonymous folios, so we don't necessarily
3020-
* have an inode to track for sync.
3021-
*/
3022-
if (mapping->host && !on_wblist)
3023-
sb_mark_inode_writeback(mapping->host);
3011+
wb_stat_mod(wb, WB_WRITEBACK, nr);
3012+
if (!on_wblist)
3013+
wb_inode_writeback_start(wb);
30243014
}
3015+
3016+
/*
3017+
* We can come through here when swapping anonymous
3018+
* folios, so we don't necessarily have an inode to
3019+
* track for sync.
3020+
*/
3021+
if (mapping->host && !on_wblist)
3022+
sb_mark_inode_writeback(mapping->host);
30253023
if (!folio_test_dirty(folio))
30263024
xas_clear_mark(&xas, PAGECACHE_TAG_DIRTY);
30273025
if (!keep_write)
30283026
xas_clear_mark(&xas, PAGECACHE_TAG_TOWRITE);
30293027
xas_unlock_irqrestore(&xas, flags);
30303028
} else {
3031-
ret = folio_test_set_writeback(folio);
3032-
}
3033-
if (!ret) {
3034-
lruvec_stat_mod_folio(folio, NR_WRITEBACK, nr);
3035-
zone_stat_mod_folio(folio, NR_ZONE_WRITE_PENDING, nr);
3029+
folio_test_set_writeback(folio);
30363030
}
3031+
3032+
lruvec_stat_mod_folio(folio, NR_WRITEBACK, nr);
3033+
zone_stat_mod_folio(folio, NR_ZONE_WRITE_PENDING, nr);
30373034
folio_memcg_unlock(folio);
3035+
30383036
access_ret = arch_make_folio_accessible(folio);
30393037
/*
30403038
* If writeback has been triggered on a page that cannot be made
30413039
* accessible, it is too late to recover here.
30423040
*/
30433041
VM_BUG_ON_FOLIO(access_ret != 0, folio);
3044-
3045-
return ret;
30463042
}
30473043
EXPORT_SYMBOL(__folio_start_writeback);
30483044

0 commit comments

Comments
 (0)