mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +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
 | 
			
		||||
 *				should contribute to accounting
 | 
			
		||||
 * BDI_CAP_WRITEBACK_ACCT:	Automatically account writeback pages
 | 
			
		||||
 * BDI_CAP_STRICTLIMIT:		Keep number of dirty pages below bdi threshold
 | 
			
		||||
 */
 | 
			
		||||
#define BDI_CAP_WRITEBACK		(1 << 0)
 | 
			
		||||
#define BDI_CAP_WRITEBACK_ACCT		(1 << 1)
 | 
			
		||||
#define BDI_CAP_STRICTLIMIT		(1 << 2)
 | 
			
		||||
#define BDI_CAP_STRICTLIMIT		(1 << 1)
 | 
			
		||||
 | 
			
		||||
extern struct backing_dev_info noop_backing_dev_info;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1026,7 +1026,7 @@ struct backing_dev_info *bdi_alloc(int node_id)
 | 
			
		|||
		kfree(bdi);
 | 
			
		||||
		return NULL;
 | 
			
		||||
	}
 | 
			
		||||
	bdi->capabilities = BDI_CAP_WRITEBACK | BDI_CAP_WRITEBACK_ACCT;
 | 
			
		||||
	bdi->capabilities = BDI_CAP_WRITEBACK;
 | 
			
		||||
	bdi->ra_pages = VM_READAHEAD_PAGES;
 | 
			
		||||
	bdi->io_pages = VM_READAHEAD_PAGES;
 | 
			
		||||
	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)) {
 | 
			
		||||
		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;
 | 
			
		||||
 | 
			
		||||
		xa_lock_irqsave(&mapping->i_pages, flags);
 | 
			
		||||
		ret = folio_xor_flags_has_waiters(folio, 1 << PG_writeback);
 | 
			
		||||
		__xa_clear_mark(&mapping->i_pages, folio_index(folio),
 | 
			
		||||
					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_writeout_add(wb, nr);
 | 
			
		||||
			if (!mapping_tagged(mapping, PAGECACHE_TAG_WRITEBACK))
 | 
			
		||||
				wb_inode_writeback_end(wb);
 | 
			
		||||
		wb_stat_mod(wb, WB_WRITEBACK, -nr);
 | 
			
		||||
		__wb_writeout_add(wb, nr);
 | 
			
		||||
		if (!mapping_tagged(mapping, PAGECACHE_TAG_WRITEBACK)) {
 | 
			
		||||
			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);
 | 
			
		||||
	} else {
 | 
			
		||||
		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)) {
 | 
			
		||||
		XA_STATE(xas, &mapping->i_pages, folio_index(folio));
 | 
			
		||||
		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;
 | 
			
		||||
		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);
 | 
			
		||||
 | 
			
		||||
		xas_set_mark(&xas, 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);
 | 
			
		||||
			if (!on_wblist)
 | 
			
		||||
				wb_inode_writeback_start(wb);
 | 
			
		||||
		wb_stat_mod(wb, WB_WRITEBACK, nr);
 | 
			
		||||
		if (!on_wblist) {
 | 
			
		||||
			wb_inode_writeback_start(wb);
 | 
			
		||||
			/*
 | 
			
		||||
			 * We can come through here when swapping anonymous
 | 
			
		||||
			 * 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))
 | 
			
		||||
			xas_clear_mark(&xas, PAGECACHE_TAG_DIRTY);
 | 
			
		||||
		if (!keep_write)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue