forked from mirrors/linux
		
	remove inode_congested()
inode_congested() reports if the backing-device for the inode is congested. No bdi reports congestion any more, so this always returns 'false'. So remove inode_congested() and related functions, and remove the call sites, assuming that inode_congested() always returns 'false'. Link: https://lkml.kernel.org/r/164549983741.9187.2174285592262191311.stgit@noble.brown Signed-off-by: NeilBrown <neilb@suse.de> Cc: Anna Schumaker <Anna.Schumaker@Netapp.com> Cc: Chao Yu <chao@kernel.org> Cc: Darrick J. Wong <djwong@kernel.org> Cc: Ilya Dryomov <idryomov@gmail.com> Cc: Jaegeuk Kim <jaegeuk@kernel.org> Cc: Jan Kara <jack@suse.cz> Cc: Jeff Layton <jlayton@kernel.org> Cc: Jens Axboe <axboe@kernel.dk> Cc: Lars Ellenberg <lars.ellenberg@linbit.com> Cc: Miklos Szeredi <miklos@szeredi.hu> Cc: Paolo Valente <paolo.valente@linaro.org> Cc: Philipp Reisner <philipp.reisner@linbit.com> Cc: Ryusuke Konishi <konishi.ryusuke@gmail.com> Cc: Trond Myklebust <trond.myklebust@hammerspace.com> Cc: Wu Fengguang <fengguang.wu@intel.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									503d4fa6ee
								
							
						
					
					
						commit
						fe55d563d4
					
				
					 5 changed files with 3 additions and 84 deletions
				
			
		| 
						 | 
					@ -893,43 +893,6 @@ void wbc_account_cgroup_owner(struct writeback_control *wbc, struct page *page,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
EXPORT_SYMBOL_GPL(wbc_account_cgroup_owner);
 | 
					EXPORT_SYMBOL_GPL(wbc_account_cgroup_owner);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * inode_congested - test whether an inode is congested
 | 
					 | 
				
			||||||
 * @inode: inode to test for congestion (may be NULL)
 | 
					 | 
				
			||||||
 * @cong_bits: mask of WB_[a]sync_congested bits to test
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * Tests whether @inode is congested.  @cong_bits is the mask of congestion
 | 
					 | 
				
			||||||
 * bits to test and the return value is the mask of set bits.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * If cgroup writeback is enabled for @inode, the congestion state is
 | 
					 | 
				
			||||||
 * determined by whether the cgwb (cgroup bdi_writeback) for the blkcg
 | 
					 | 
				
			||||||
 * associated with @inode is congested; otherwise, the root wb's congestion
 | 
					 | 
				
			||||||
 * state is used.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * @inode is allowed to be NULL as this function is often called on
 | 
					 | 
				
			||||||
 * mapping->host which is NULL for the swapper space.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
int inode_congested(struct inode *inode, int cong_bits)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	/*
 | 
					 | 
				
			||||||
	 * Once set, ->i_wb never becomes NULL while the inode is alive.
 | 
					 | 
				
			||||||
	 * Start transaction iff ->i_wb is visible.
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	if (inode && inode_to_wb_is_valid(inode)) {
 | 
					 | 
				
			||||||
		struct bdi_writeback *wb;
 | 
					 | 
				
			||||||
		struct wb_lock_cookie lock_cookie = {};
 | 
					 | 
				
			||||||
		bool congested;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		wb = unlocked_inode_to_wb_begin(inode, &lock_cookie);
 | 
					 | 
				
			||||||
		congested = wb_congested(wb, cong_bits);
 | 
					 | 
				
			||||||
		unlocked_inode_to_wb_end(inode, &lock_cookie);
 | 
					 | 
				
			||||||
		return congested;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return wb_congested(&inode_to_bdi(inode)->wb, cong_bits);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
EXPORT_SYMBOL_GPL(inode_congested);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * wb_split_bdi_pages - split nr_pages to write according to bandwidth
 | 
					 * wb_split_bdi_pages - split nr_pages to write according to bandwidth
 | 
				
			||||||
 * @wb: target bdi_writeback to split @nr_pages to
 | 
					 * @wb: target bdi_writeback to split @nr_pages to
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -162,7 +162,6 @@ struct bdi_writeback *wb_get_create(struct backing_dev_info *bdi,
 | 
				
			||||||
				    gfp_t gfp);
 | 
									    gfp_t gfp);
 | 
				
			||||||
void wb_memcg_offline(struct mem_cgroup *memcg);
 | 
					void wb_memcg_offline(struct mem_cgroup *memcg);
 | 
				
			||||||
void wb_blkcg_offline(struct blkcg *blkcg);
 | 
					void wb_blkcg_offline(struct blkcg *blkcg);
 | 
				
			||||||
int inode_congested(struct inode *inode, int cong_bits);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * inode_cgwb_enabled - test whether cgroup writeback is enabled on an inode
 | 
					 * inode_cgwb_enabled - test whether cgroup writeback is enabled on an inode
 | 
				
			||||||
| 
						 | 
					@ -390,29 +389,8 @@ static inline void wb_blkcg_offline(struct blkcg *blkcg)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline int inode_congested(struct inode *inode, int cong_bits)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	return wb_congested(&inode_to_bdi(inode)->wb, cong_bits);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif	/* CONFIG_CGROUP_WRITEBACK */
 | 
					#endif	/* CONFIG_CGROUP_WRITEBACK */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline int inode_read_congested(struct inode *inode)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	return inode_congested(inode, 1 << WB_sync_congested);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static inline int inode_write_congested(struct inode *inode)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	return inode_congested(inode, 1 << WB_async_congested);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static inline int inode_rw_congested(struct inode *inode)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	return inode_congested(inode, (1 << WB_sync_congested) |
 | 
					 | 
				
			||||||
				      (1 << WB_async_congested));
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static inline int bdi_congested(struct backing_dev_info *bdi, int cong_bits)
 | 
					static inline int bdi_congested(struct backing_dev_info *bdi, int cong_bits)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return wb_congested(&bdi->wb, cong_bits);
 | 
						return wb_congested(&bdi->wb, cong_bits);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -109,7 +109,6 @@ int generic_fadvise(struct file *file, loff_t offset, loff_t len, int advice)
 | 
				
			||||||
	case POSIX_FADV_NOREUSE:
 | 
						case POSIX_FADV_NOREUSE:
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	case POSIX_FADV_DONTNEED:
 | 
						case POSIX_FADV_DONTNEED:
 | 
				
			||||||
		if (!inode_write_congested(mapping->host))
 | 
					 | 
				
			||||||
		__filemap_fdatawrite_range(mapping, offset, endbyte,
 | 
							__filemap_fdatawrite_range(mapping, offset, endbyte,
 | 
				
			||||||
					   WB_SYNC_NONE);
 | 
										   WB_SYNC_NONE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -709,12 +709,6 @@ void page_cache_async_ra(struct readahead_control *ractl,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	folio_clear_readahead(folio);
 | 
						folio_clear_readahead(folio);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/*
 | 
					 | 
				
			||||||
	 * Defer asynchronous read-ahead on IO congestion.
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	if (inode_read_congested(ractl->mapping->host))
 | 
					 | 
				
			||||||
		return;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (blk_cgroup_congested())
 | 
						if (blk_cgroup_congested())
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										17
									
								
								mm/vmscan.c
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								mm/vmscan.c
									
									
									
									
									
								
							| 
						 | 
					@ -989,17 +989,6 @@ static inline int is_page_cache_freeable(struct page *page)
 | 
				
			||||||
	return page_count(page) - page_has_private(page) == 1 + page_cache_pins;
 | 
						return page_count(page) - page_has_private(page) == 1 + page_cache_pins;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int may_write_to_inode(struct inode *inode)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	if (current->flags & PF_SWAPWRITE)
 | 
					 | 
				
			||||||
		return 1;
 | 
					 | 
				
			||||||
	if (!inode_write_congested(inode))
 | 
					 | 
				
			||||||
		return 1;
 | 
					 | 
				
			||||||
	if (inode_to_bdi(inode) == current->backing_dev_info)
 | 
					 | 
				
			||||||
		return 1;
 | 
					 | 
				
			||||||
	return 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * We detected a synchronous write error writing a page out.  Probably
 | 
					 * We detected a synchronous write error writing a page out.  Probably
 | 
				
			||||||
 * -ENOSPC.  We need to propagate that into the address_space for a subsequent
 | 
					 * -ENOSPC.  We need to propagate that into the address_space for a subsequent
 | 
				
			||||||
| 
						 | 
					@ -1201,8 +1190,6 @@ static pageout_t pageout(struct page *page, struct address_space *mapping)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (mapping->a_ops->writepage == NULL)
 | 
						if (mapping->a_ops->writepage == NULL)
 | 
				
			||||||
		return PAGE_ACTIVATE;
 | 
							return PAGE_ACTIVATE;
 | 
				
			||||||
	if (!may_write_to_inode(mapping->host))
 | 
					 | 
				
			||||||
		return PAGE_KEEP;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (clear_page_dirty_for_io(page)) {
 | 
						if (clear_page_dirty_for_io(page)) {
 | 
				
			||||||
		int res;
 | 
							int res;
 | 
				
			||||||
| 
						 | 
					@ -1578,9 +1565,7 @@ static unsigned int shrink_page_list(struct list_head *page_list,
 | 
				
			||||||
		 * end of the LRU a second time.
 | 
							 * end of the LRU a second time.
 | 
				
			||||||
		 */
 | 
							 */
 | 
				
			||||||
		mapping = page_mapping(page);
 | 
							mapping = page_mapping(page);
 | 
				
			||||||
		if (((dirty || writeback) && mapping &&
 | 
							if (writeback && PageReclaim(page))
 | 
				
			||||||
		     inode_write_congested(mapping->host)) ||
 | 
					 | 
				
			||||||
		    (writeback && PageReclaim(page)))
 | 
					 | 
				
			||||||
			stat->nr_congested++;
 | 
								stat->nr_congested++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		/*
 | 
							/*
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue