forked from mirrors/linux
		
	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. | ||||
| 
 | ||||
| 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 | ||||
| each page that is found to require writeback. | ||||
| 
 | ||||
|  |  | |||
|  | @ -286,7 +286,7 @@ static int journal_finish_inode_data_buffers(journal_t *journal, | |||
| 		if (err) { | ||||
| 			/*
 | ||||
| 			 * 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(). | ||||
| 			 */ | ||||
| 			set_bit(AS_EIO, | ||||
|  |  | |||
|  | @ -453,9 +453,7 @@ int do_sync_mapping_range(struct address_space *mapping, loff_t offset, | |||
| 
 | ||||
| 	ret = 0; | ||||
| 	if (flags & SYNC_FILE_RANGE_WAIT_BEFORE) { | ||||
| 		ret = wait_on_page_writeback_range(mapping, | ||||
| 					offset >> PAGE_CACHE_SHIFT, | ||||
| 					endbyte >> PAGE_CACHE_SHIFT); | ||||
| 		ret = filemap_fdatawait_range(mapping, offset, endbyte); | ||||
| 		if (ret < 0) | ||||
| 			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) { | ||||
| 		ret = wait_on_page_writeback_range(mapping, | ||||
| 					offset >> PAGE_CACHE_SHIFT, | ||||
| 					endbyte >> PAGE_CACHE_SHIFT); | ||||
| 		ret = filemap_fdatawait_range(mapping, offset, endbyte); | ||||
| 	} | ||||
| out: | ||||
| 	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_range(struct address_space *mapping, | ||||
| 				        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, | ||||
| 				loff_t start, loff_t end, int sync_mode); | ||||
| 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); | ||||
| 
 | ||||
| /**
 | ||||
|  * wait_on_page_writeback_range - wait for writeback to complete | ||||
|  * @mapping:	target address_space | ||||
|  * @start:	beginning page index | ||||
|  * @end:	ending page index | ||||
|  * filemap_fdatawait_range - wait for writeback to complete | ||||
|  * @mapping:		address space structure to wait for | ||||
|  * @start_byte:		offset in bytes where the range starts | ||||
|  * @end_byte:		offset in bytes where the range ends (inclusive) | ||||
|  * | ||||
|  * Wait for writeback to complete against pages indexed by start->end | ||||
|  * inclusive | ||||
|  * Walk the list of under-writeback pages of the given address space | ||||
|  * in the given range and wait for all of them. | ||||
|  */ | ||||
| int wait_on_page_writeback_range(struct address_space *mapping, | ||||
| 				pgoff_t start, pgoff_t end) | ||||
| int filemap_fdatawait_range(struct address_space *mapping, loff_t start_byte, | ||||
| 			    loff_t end_byte) | ||||
| { | ||||
| 	pgoff_t index = start_byte >> PAGE_CACHE_SHIFT; | ||||
| 	pgoff_t end = end_byte >> PAGE_CACHE_SHIFT; | ||||
| 	struct pagevec pvec; | ||||
| 	int nr_pages; | ||||
| 	int ret = 0; | ||||
| 	pgoff_t index; | ||||
| 
 | ||||
| 	if (end < start) | ||||
| 	if (end_byte < start_byte) | ||||
| 		return 0; | ||||
| 
 | ||||
| 	pagevec_init(&pvec, 0); | ||||
| 	index = start; | ||||
| 	while ((index <= end) && | ||||
| 			(nr_pages = pagevec_lookup_tag(&pvec, mapping, &index, | ||||
| 			PAGECACHE_TAG_WRITEBACK, | ||||
|  | @ -310,25 +310,6 @@ int wait_on_page_writeback_range(struct address_space *mapping, | |||
| 
 | ||||
| 	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); | ||||
| 
 | ||||
| /**
 | ||||
|  | @ -345,8 +326,7 @@ int filemap_fdatawait(struct address_space *mapping) | |||
| 	if (i_size == 0) | ||||
| 		return 0; | ||||
| 
 | ||||
| 	return wait_on_page_writeback_range(mapping, 0, | ||||
| 				(i_size - 1) >> PAGE_CACHE_SHIFT); | ||||
| 	return filemap_fdatawait_range(mapping, 0, i_size - 1); | ||||
| } | ||||
| EXPORT_SYMBOL(filemap_fdatawait); | ||||
| 
 | ||||
|  | @ -393,9 +373,8 @@ int filemap_write_and_wait_range(struct address_space *mapping, | |||
| 						 WB_SYNC_ALL); | ||||
| 		/* See comment of filemap_write_and_wait() */ | ||||
| 		if (err != -EIO) { | ||||
| 			int err2 = wait_on_page_writeback_range(mapping, | ||||
| 						lstart >> PAGE_CACHE_SHIFT, | ||||
| 						lend >> PAGE_CACHE_SHIFT); | ||||
| 			int err2 = filemap_fdatawait_range(mapping, | ||||
| 						lstart, lend); | ||||
| 			if (!err) | ||||
| 				err = err2; | ||||
| 		} | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Christoph Hellwig
						Christoph Hellwig