mirror of
https://github.com/torvalds/linux.git
synced 2025-11-02 09:40:27 +02:00
mm: remove BDI_CAP_WRITEBACK_ACCT
There are no users of BDI_CAP_WRITEBACK_ACCT now that fuse doesn't do its own writeback accounting. This commit removes BDI_CAP_WRITEBACK_ACCT. Signed-off-by: Joanne Koong <joannelkoong@gmail.com> Acked-by: David Hildenbrand <david@redhat.com> Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
This commit is contained in:
parent
494d2f5088
commit
2841808f35
3 changed files with 20 additions and 29 deletions
|
|
@ -108,12 +108,10 @@ int bdi_set_strict_limit(struct backing_dev_info *bdi, unsigned int strict_limit
|
||||||
*
|
*
|
||||||
* BDI_CAP_WRITEBACK: Supports dirty page writeback, and dirty pages
|
* BDI_CAP_WRITEBACK: Supports dirty page writeback, and dirty pages
|
||||||
* should contribute to accounting
|
* should contribute to accounting
|
||||||
* BDI_CAP_WRITEBACK_ACCT: Automatically account writeback pages
|
|
||||||
* BDI_CAP_STRICTLIMIT: Keep number of dirty pages below bdi threshold
|
* BDI_CAP_STRICTLIMIT: Keep number of dirty pages below bdi threshold
|
||||||
*/
|
*/
|
||||||
#define BDI_CAP_WRITEBACK (1 << 0)
|
#define BDI_CAP_WRITEBACK (1 << 0)
|
||||||
#define BDI_CAP_WRITEBACK_ACCT (1 << 1)
|
#define BDI_CAP_STRICTLIMIT (1 << 1)
|
||||||
#define BDI_CAP_STRICTLIMIT (1 << 2)
|
|
||||||
|
|
||||||
extern struct backing_dev_info noop_backing_dev_info;
|
extern struct backing_dev_info noop_backing_dev_info;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1026,7 +1026,7 @@ struct backing_dev_info *bdi_alloc(int node_id)
|
||||||
kfree(bdi);
|
kfree(bdi);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
bdi->capabilities = BDI_CAP_WRITEBACK | BDI_CAP_WRITEBACK_ACCT;
|
bdi->capabilities = BDI_CAP_WRITEBACK;
|
||||||
bdi->ra_pages = VM_READAHEAD_PAGES;
|
bdi->ra_pages = VM_READAHEAD_PAGES;
|
||||||
bdi->io_pages = VM_READAHEAD_PAGES;
|
bdi->io_pages = VM_READAHEAD_PAGES;
|
||||||
timer_setup(&bdi->laptop_mode_wb_timer, laptop_mode_timer_fn, 0);
|
timer_setup(&bdi->laptop_mode_wb_timer, laptop_mode_timer_fn, 0);
|
||||||
|
|
|
||||||
|
|
@ -3014,26 +3014,22 @@ bool __folio_end_writeback(struct folio *folio)
|
||||||
|
|
||||||
if (mapping && mapping_use_writeback_tags(mapping)) {
|
if (mapping && mapping_use_writeback_tags(mapping)) {
|
||||||
struct inode *inode = mapping->host;
|
struct inode *inode = mapping->host;
|
||||||
struct backing_dev_info *bdi = inode_to_bdi(inode);
|
struct bdi_writeback *wb = inode_to_wb(inode);
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
xa_lock_irqsave(&mapping->i_pages, flags);
|
xa_lock_irqsave(&mapping->i_pages, flags);
|
||||||
ret = folio_xor_flags_has_waiters(folio, 1 << PG_writeback);
|
ret = folio_xor_flags_has_waiters(folio, 1 << PG_writeback);
|
||||||
__xa_clear_mark(&mapping->i_pages, folio_index(folio),
|
__xa_clear_mark(&mapping->i_pages, folio_index(folio),
|
||||||
PAGECACHE_TAG_WRITEBACK);
|
PAGECACHE_TAG_WRITEBACK);
|
||||||
if (bdi->capabilities & BDI_CAP_WRITEBACK_ACCT) {
|
|
||||||
struct bdi_writeback *wb = inode_to_wb(inode);
|
|
||||||
|
|
||||||
wb_stat_mod(wb, WB_WRITEBACK, -nr);
|
wb_stat_mod(wb, WB_WRITEBACK, -nr);
|
||||||
__wb_writeout_add(wb, nr);
|
__wb_writeout_add(wb, nr);
|
||||||
if (!mapping_tagged(mapping, PAGECACHE_TAG_WRITEBACK))
|
if (!mapping_tagged(mapping, PAGECACHE_TAG_WRITEBACK)) {
|
||||||
wb_inode_writeback_end(wb);
|
wb_inode_writeback_end(wb);
|
||||||
|
if (mapping->host)
|
||||||
|
sb_clear_inode_writeback(mapping->host);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mapping->host && !mapping_tagged(mapping,
|
|
||||||
PAGECACHE_TAG_WRITEBACK))
|
|
||||||
sb_clear_inode_writeback(mapping->host);
|
|
||||||
|
|
||||||
xa_unlock_irqrestore(&mapping->i_pages, flags);
|
xa_unlock_irqrestore(&mapping->i_pages, flags);
|
||||||
} else {
|
} else {
|
||||||
ret = folio_xor_flags_has_waiters(folio, 1 << PG_writeback);
|
ret = folio_xor_flags_has_waiters(folio, 1 << PG_writeback);
|
||||||
|
|
@ -3058,7 +3054,7 @@ void __folio_start_writeback(struct folio *folio, bool keep_write)
|
||||||
if (mapping && mapping_use_writeback_tags(mapping)) {
|
if (mapping && mapping_use_writeback_tags(mapping)) {
|
||||||
XA_STATE(xas, &mapping->i_pages, folio_index(folio));
|
XA_STATE(xas, &mapping->i_pages, folio_index(folio));
|
||||||
struct inode *inode = mapping->host;
|
struct inode *inode = mapping->host;
|
||||||
struct backing_dev_info *bdi = inode_to_bdi(inode);
|
struct bdi_writeback *wb = inode_to_wb(inode);
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
bool on_wblist;
|
bool on_wblist;
|
||||||
|
|
||||||
|
|
@ -3069,21 +3065,18 @@ void __folio_start_writeback(struct folio *folio, bool keep_write)
|
||||||
on_wblist = mapping_tagged(mapping, PAGECACHE_TAG_WRITEBACK);
|
on_wblist = mapping_tagged(mapping, PAGECACHE_TAG_WRITEBACK);
|
||||||
|
|
||||||
xas_set_mark(&xas, PAGECACHE_TAG_WRITEBACK);
|
xas_set_mark(&xas, PAGECACHE_TAG_WRITEBACK);
|
||||||
if (bdi->capabilities & BDI_CAP_WRITEBACK_ACCT) {
|
wb_stat_mod(wb, WB_WRITEBACK, nr);
|
||||||
struct bdi_writeback *wb = inode_to_wb(inode);
|
if (!on_wblist) {
|
||||||
|
wb_inode_writeback_start(wb);
|
||||||
wb_stat_mod(wb, WB_WRITEBACK, nr);
|
/*
|
||||||
if (!on_wblist)
|
* We can come through here when swapping anonymous
|
||||||
wb_inode_writeback_start(wb);
|
* folios, so we don't necessarily have an inode to
|
||||||
|
* track for sync.
|
||||||
|
*/
|
||||||
|
if (mapping->host)
|
||||||
|
sb_mark_inode_writeback(mapping->host);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* We can come through here when swapping anonymous
|
|
||||||
* folios, so we don't necessarily have an inode to
|
|
||||||
* track for sync.
|
|
||||||
*/
|
|
||||||
if (mapping->host && !on_wblist)
|
|
||||||
sb_mark_inode_writeback(mapping->host);
|
|
||||||
if (!folio_test_dirty(folio))
|
if (!folio_test_dirty(folio))
|
||||||
xas_clear_mark(&xas, PAGECACHE_TAG_DIRTY);
|
xas_clear_mark(&xas, PAGECACHE_TAG_DIRTY);
|
||||||
if (!keep_write)
|
if (!keep_write)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue