mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	kill wait_on_page_writeback_range
All callers really want the more logical filemap_fdatawait_range interface, so convert them to use it and merge wait_on_page_writeback_range into filemap_fdatawait_range. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Jan Kara <jack@suse.cz>
This commit is contained in:
		
							parent
							
								
									6b2f3d1f76
								
							
						
					
					
						commit
						94004ed726
					
				
					 5 changed files with 18 additions and 45 deletions
				
			
		| 
						 | 
					@ -472,7 +472,7 @@ __sync_single_inode) to check if ->writepages has been successful in
 | 
				
			||||||
writing out the whole address_space.
 | 
					writing out the whole address_space.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The Writeback tag is used by filemap*wait* and sync_page* functions,
 | 
					The Writeback tag is used by filemap*wait* and sync_page* functions,
 | 
				
			||||||
via wait_on_page_writeback_range, to wait for all writeback to
 | 
					via filemap_fdatawait_range, to wait for all writeback to
 | 
				
			||||||
complete.  While waiting ->sync_page (if defined) will be called on
 | 
					complete.  While waiting ->sync_page (if defined) will be called on
 | 
				
			||||||
each page that is found to require writeback.
 | 
					each page that is found to require writeback.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -286,7 +286,7 @@ static int journal_finish_inode_data_buffers(journal_t *journal,
 | 
				
			||||||
		if (err) {
 | 
							if (err) {
 | 
				
			||||||
			/*
 | 
								/*
 | 
				
			||||||
			 * Because AS_EIO is cleared by
 | 
								 * Because AS_EIO is cleared by
 | 
				
			||||||
			 * wait_on_page_writeback_range(), set it again so
 | 
								 * filemap_fdatawait_range(), set it again so
 | 
				
			||||||
			 * that user process can get -EIO from fsync().
 | 
								 * that user process can get -EIO from fsync().
 | 
				
			||||||
			 */
 | 
								 */
 | 
				
			||||||
			set_bit(AS_EIO,
 | 
								set_bit(AS_EIO,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -453,9 +453,7 @@ int do_sync_mapping_range(struct address_space *mapping, loff_t offset,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ret = 0;
 | 
						ret = 0;
 | 
				
			||||||
	if (flags & SYNC_FILE_RANGE_WAIT_BEFORE) {
 | 
						if (flags & SYNC_FILE_RANGE_WAIT_BEFORE) {
 | 
				
			||||||
		ret = wait_on_page_writeback_range(mapping,
 | 
							ret = filemap_fdatawait_range(mapping, offset, endbyte);
 | 
				
			||||||
					offset >> PAGE_CACHE_SHIFT,
 | 
					 | 
				
			||||||
					endbyte >> PAGE_CACHE_SHIFT);
 | 
					 | 
				
			||||||
		if (ret < 0)
 | 
							if (ret < 0)
 | 
				
			||||||
			goto out;
 | 
								goto out;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -468,9 +466,7 @@ int do_sync_mapping_range(struct address_space *mapping, loff_t offset,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (flags & SYNC_FILE_RANGE_WAIT_AFTER) {
 | 
						if (flags & SYNC_FILE_RANGE_WAIT_AFTER) {
 | 
				
			||||||
		ret = wait_on_page_writeback_range(mapping,
 | 
							ret = filemap_fdatawait_range(mapping, offset, endbyte);
 | 
				
			||||||
					offset >> PAGE_CACHE_SHIFT,
 | 
					 | 
				
			||||||
					endbyte >> PAGE_CACHE_SHIFT);
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
out:
 | 
					out:
 | 
				
			||||||
	return ret;
 | 
						return ret;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2091,8 +2091,6 @@ extern int filemap_fdatawait_range(struct address_space *, loff_t lstart,
 | 
				
			||||||
extern int filemap_write_and_wait(struct address_space *mapping);
 | 
					extern int filemap_write_and_wait(struct address_space *mapping);
 | 
				
			||||||
extern int filemap_write_and_wait_range(struct address_space *mapping,
 | 
					extern int filemap_write_and_wait_range(struct address_space *mapping,
 | 
				
			||||||
				        loff_t lstart, loff_t lend);
 | 
									        loff_t lstart, loff_t lend);
 | 
				
			||||||
extern int wait_on_page_writeback_range(struct address_space *mapping,
 | 
					 | 
				
			||||||
				pgoff_t start, pgoff_t end);
 | 
					 | 
				
			||||||
extern int __filemap_fdatawrite_range(struct address_space *mapping,
 | 
					extern int __filemap_fdatawrite_range(struct address_space *mapping,
 | 
				
			||||||
				loff_t start, loff_t end, int sync_mode);
 | 
									loff_t start, loff_t end, int sync_mode);
 | 
				
			||||||
extern int filemap_fdatawrite_range(struct address_space *mapping,
 | 
					extern int filemap_fdatawrite_range(struct address_space *mapping,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										49
									
								
								mm/filemap.c
									
									
									
									
									
								
							
							
						
						
									
										49
									
								
								mm/filemap.c
									
									
									
									
									
								
							| 
						 | 
					@ -260,27 +260,27 @@ int filemap_flush(struct address_space *mapping)
 | 
				
			||||||
EXPORT_SYMBOL(filemap_flush);
 | 
					EXPORT_SYMBOL(filemap_flush);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * wait_on_page_writeback_range - wait for writeback to complete
 | 
					 * filemap_fdatawait_range - wait for writeback to complete
 | 
				
			||||||
 * @mapping:	target address_space
 | 
					 * @mapping:		address space structure to wait for
 | 
				
			||||||
 * @start:	beginning page index
 | 
					 * @start_byte:		offset in bytes where the range starts
 | 
				
			||||||
 * @end:	ending page index
 | 
					 * @end_byte:		offset in bytes where the range ends (inclusive)
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Wait for writeback to complete against pages indexed by start->end
 | 
					 * Walk the list of under-writeback pages of the given address space
 | 
				
			||||||
 * inclusive
 | 
					 * in the given range and wait for all of them.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
int wait_on_page_writeback_range(struct address_space *mapping,
 | 
					int filemap_fdatawait_range(struct address_space *mapping, loff_t start_byte,
 | 
				
			||||||
				pgoff_t start, pgoff_t end)
 | 
								    loff_t end_byte)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						pgoff_t index = start_byte >> PAGE_CACHE_SHIFT;
 | 
				
			||||||
 | 
						pgoff_t end = end_byte >> PAGE_CACHE_SHIFT;
 | 
				
			||||||
	struct pagevec pvec;
 | 
						struct pagevec pvec;
 | 
				
			||||||
	int nr_pages;
 | 
						int nr_pages;
 | 
				
			||||||
	int ret = 0;
 | 
						int ret = 0;
 | 
				
			||||||
	pgoff_t index;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (end < start)
 | 
						if (end_byte < start_byte)
 | 
				
			||||||
		return 0;
 | 
							return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pagevec_init(&pvec, 0);
 | 
						pagevec_init(&pvec, 0);
 | 
				
			||||||
	index = start;
 | 
					 | 
				
			||||||
	while ((index <= end) &&
 | 
						while ((index <= end) &&
 | 
				
			||||||
			(nr_pages = pagevec_lookup_tag(&pvec, mapping, &index,
 | 
								(nr_pages = pagevec_lookup_tag(&pvec, mapping, &index,
 | 
				
			||||||
			PAGECACHE_TAG_WRITEBACK,
 | 
								PAGECACHE_TAG_WRITEBACK,
 | 
				
			||||||
| 
						 | 
					@ -310,25 +310,6 @@ int wait_on_page_writeback_range(struct address_space *mapping,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return ret;
 | 
						return ret;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * filemap_fdatawait_range - wait for all under-writeback pages to complete in a given range
 | 
					 | 
				
			||||||
 * @mapping: address space structure to wait for
 | 
					 | 
				
			||||||
 * @start:	offset in bytes where the range starts
 | 
					 | 
				
			||||||
 * @end:	offset in bytes where the range ends (inclusive)
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * Walk the list of under-writeback pages of the given address space
 | 
					 | 
				
			||||||
 * in the given range and wait for all of them.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * This is just a simple wrapper so that callers don't have to convert offsets
 | 
					 | 
				
			||||||
 * to page indexes themselves
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
int filemap_fdatawait_range(struct address_space *mapping, loff_t start,
 | 
					 | 
				
			||||||
			    loff_t end)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	return wait_on_page_writeback_range(mapping, start >> PAGE_CACHE_SHIFT,
 | 
					 | 
				
			||||||
					    end >> PAGE_CACHE_SHIFT);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
EXPORT_SYMBOL(filemap_fdatawait_range);
 | 
					EXPORT_SYMBOL(filemap_fdatawait_range);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
| 
						 | 
					@ -345,8 +326,7 @@ int filemap_fdatawait(struct address_space *mapping)
 | 
				
			||||||
	if (i_size == 0)
 | 
						if (i_size == 0)
 | 
				
			||||||
		return 0;
 | 
							return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return wait_on_page_writeback_range(mapping, 0,
 | 
						return filemap_fdatawait_range(mapping, 0, i_size - 1);
 | 
				
			||||||
				(i_size - 1) >> PAGE_CACHE_SHIFT);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
EXPORT_SYMBOL(filemap_fdatawait);
 | 
					EXPORT_SYMBOL(filemap_fdatawait);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -393,9 +373,8 @@ int filemap_write_and_wait_range(struct address_space *mapping,
 | 
				
			||||||
						 WB_SYNC_ALL);
 | 
											 WB_SYNC_ALL);
 | 
				
			||||||
		/* See comment of filemap_write_and_wait() */
 | 
							/* See comment of filemap_write_and_wait() */
 | 
				
			||||||
		if (err != -EIO) {
 | 
							if (err != -EIO) {
 | 
				
			||||||
			int err2 = wait_on_page_writeback_range(mapping,
 | 
								int err2 = filemap_fdatawait_range(mapping,
 | 
				
			||||||
						lstart >> PAGE_CACHE_SHIFT,
 | 
											lstart, lend);
 | 
				
			||||||
						lend >> PAGE_CACHE_SHIFT);
 | 
					 | 
				
			||||||
			if (!err)
 | 
								if (!err)
 | 
				
			||||||
				err = err2;
 | 
									err = err2;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue