btrfs: Remove extent_io_ops::writepage_end_io_hook
This callback is ony ever called for data page writeout so there is no need to actually abstract it via extent_io_ops. Lets just export it, remove the definition of the callback and call it directly in the functions that invoke the callback. Also rename the function to btrfs_writepage_endio_finish_ordered since what it really does is account finished io in the ordered extent data structures. No functional changes. Reviewed-by: Josef Bacik <josef@toxicpanda.com> Signed-off-by: Nikolay Borisov <nborisov@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
		
							parent
							
								
									d75855b451
								
							
						
					
					
						commit
						7087a9d8db
					
				| @ -229,7 +229,6 @@ static noinline void end_compressed_writeback(struct inode *inode, | ||||
|  */ | ||||
| static void end_compressed_bio_write(struct bio *bio) | ||||
| { | ||||
| 	struct extent_io_tree *tree; | ||||
| 	struct compressed_bio *cb = bio->bi_private; | ||||
| 	struct inode *inode; | ||||
| 	struct page *page; | ||||
| @ -248,14 +247,10 @@ static void end_compressed_bio_write(struct bio *bio) | ||||
| 	 * call back into the FS and do all the end_io operations | ||||
| 	 */ | ||||
| 	inode = cb->inode; | ||||
| 	tree = &BTRFS_I(inode)->io_tree; | ||||
| 	cb->compressed_pages[0]->mapping = cb->inode->i_mapping; | ||||
| 	tree->ops->writepage_end_io_hook(cb->compressed_pages[0], | ||||
| 					 cb->start, | ||||
| 					 cb->start + cb->len - 1, | ||||
| 					 NULL, | ||||
| 					 bio->bi_status ? | ||||
| 					 BLK_STS_OK : BLK_STS_NOTSUPP); | ||||
| 	btrfs_writepage_endio_finish_ordered(cb->compressed_pages[0], | ||||
| 			cb->start, cb->start + cb->len - 1, NULL, | ||||
| 			bio->bi_status ? BLK_STS_OK : BLK_STS_NOTSUPP); | ||||
| 	cb->compressed_pages[0]->mapping = NULL; | ||||
| 
 | ||||
| 	end_compressed_writeback(inode, cb); | ||||
|  | ||||
| @ -3193,6 +3193,8 @@ int btrfs_run_delalloc_range(void *private_data, struct page *locked_page, | ||||
| 		u64 start, u64 end, int *page_started, unsigned long *nr_written, | ||||
| 		struct writeback_control *wbc); | ||||
| int btrfs_writepage_cow_fixup(struct page *page, u64 start, u64 end); | ||||
| void btrfs_writepage_endio_finish_ordered(struct page *page, u64 start, | ||||
| 		u64 end, struct extent_state *state, int uptodate); | ||||
| extern const struct dentry_operations btrfs_dentry_operations; | ||||
| 
 | ||||
| /* ioctl.c */ | ||||
|  | ||||
| @ -2412,14 +2412,9 @@ static int bio_readpage_error(struct bio *failed_bio, u64 phy_offset, | ||||
| void end_extent_writepage(struct page *page, int err, u64 start, u64 end) | ||||
| { | ||||
| 	int uptodate = (err == 0); | ||||
| 	struct extent_io_tree *tree; | ||||
| 	int ret = 0; | ||||
| 
 | ||||
| 	tree = &BTRFS_I(page->mapping->host)->io_tree; | ||||
| 
 | ||||
| 	if (tree->ops && tree->ops->writepage_end_io_hook) | ||||
| 		tree->ops->writepage_end_io_hook(page, start, end, NULL, | ||||
| 				uptodate); | ||||
| 	btrfs_writepage_endio_finish_ordered(page, start, end, NULL, uptodate); | ||||
| 
 | ||||
| 	if (!uptodate) { | ||||
| 		ClearPageUptodate(page); | ||||
| @ -3342,9 +3337,8 @@ static noinline_for_stack int __extent_writepage_io(struct inode *inode, | ||||
| 
 | ||||
| 	end = page_end; | ||||
| 	if (i_size <= start) { | ||||
| 		if (tree->ops && tree->ops->writepage_end_io_hook) | ||||
| 			tree->ops->writepage_end_io_hook(page, start, | ||||
| 							 page_end, NULL, 1); | ||||
| 		btrfs_writepage_endio_finish_ordered(page, start, page_end, | ||||
| 						     NULL, 1); | ||||
| 		goto done; | ||||
| 	} | ||||
| 
 | ||||
| @ -3355,9 +3349,8 @@ static noinline_for_stack int __extent_writepage_io(struct inode *inode, | ||||
| 		u64 offset; | ||||
| 
 | ||||
| 		if (cur >= i_size) { | ||||
| 			if (tree->ops && tree->ops->writepage_end_io_hook) | ||||
| 				tree->ops->writepage_end_io_hook(page, cur, | ||||
| 							 page_end, NULL, 1); | ||||
| 			btrfs_writepage_endio_finish_ordered(page, cur, | ||||
| 							     page_end, NULL, 1); | ||||
| 			break; | ||||
| 		} | ||||
| 		em = btrfs_get_extent(BTRFS_I(inode), page, pg_offset, cur, | ||||
| @ -3391,11 +3384,10 @@ static noinline_for_stack int __extent_writepage_io(struct inode *inode, | ||||
| 			 * end_io notification does not happen here for | ||||
| 			 * compressed extents | ||||
| 			 */ | ||||
| 			if (!compressed && tree->ops && | ||||
| 			    tree->ops->writepage_end_io_hook) | ||||
| 				tree->ops->writepage_end_io_hook(page, cur, | ||||
| 							 cur + iosize - 1, | ||||
| 							 NULL, 1); | ||||
| 			if (!compressed) | ||||
| 				btrfs_writepage_endio_finish_ordered(page, cur, | ||||
| 							    cur + iosize - 1, | ||||
| 							    NULL, 1); | ||||
| 			else if (compressed) { | ||||
| 				/* we don't want to end_page_writeback on
 | ||||
| 				 * a compressed extent.  this happens | ||||
| @ -4079,10 +4071,9 @@ int extent_write_locked_range(struct inode *inode, u64 start, u64 end, | ||||
| 		if (clear_page_dirty_for_io(page)) | ||||
| 			ret = __extent_writepage(page, &wbc_writepages, &epd); | ||||
| 		else { | ||||
| 			if (tree->ops && tree->ops->writepage_end_io_hook) | ||||
| 				tree->ops->writepage_end_io_hook(page, start, | ||||
| 						 start + PAGE_SIZE - 1, | ||||
| 						 NULL, 1); | ||||
| 			btrfs_writepage_endio_finish_ordered(page, start, | ||||
| 						    start + PAGE_SIZE - 1, | ||||
| 						    NULL, 1); | ||||
| 			unlock_page(page); | ||||
| 		} | ||||
| 		put_page(page); | ||||
|  | ||||
| @ -106,8 +106,6 @@ struct extent_io_ops { | ||||
| 	/*
 | ||||
| 	 * Optional hooks, called if the pointer is not NULL | ||||
| 	 */ | ||||
| 	void (*writepage_end_io_hook)(struct page *page, u64 start, u64 end, | ||||
| 				      struct extent_state *state, int uptodate); | ||||
| 	void (*set_bit_hook)(void *private_data, struct extent_state *state, | ||||
| 			     unsigned *bits); | ||||
| 	void (*clear_bit_hook)(void *private_data, | ||||
|  | ||||
| @ -847,14 +847,14 @@ retry: | ||||
| 				    ins.offset, async_extent->pages, | ||||
| 				    async_extent->nr_pages, | ||||
| 				    async_cow->write_flags)) { | ||||
| 			struct extent_io_tree *tree = &BTRFS_I(inode)->io_tree; | ||||
| 			struct page *p = async_extent->pages[0]; | ||||
| 			const u64 start = async_extent->start; | ||||
| 			const u64 end = start + async_extent->ram_size - 1; | ||||
| 
 | ||||
| 			p->mapping = inode->i_mapping; | ||||
| 			tree->ops->writepage_end_io_hook(p, start, end, | ||||
| 							 NULL, 0); | ||||
| 			btrfs_writepage_endio_finish_ordered(p, start, end, | ||||
| 							     NULL, 0); | ||||
| 
 | ||||
| 			p->mapping = NULL; | ||||
| 			extent_clear_unlock_delalloc(inode, start, end, end, | ||||
| 						     NULL, 0, | ||||
| @ -3159,7 +3159,7 @@ static void finish_ordered_fn(struct btrfs_work *work) | ||||
| 	btrfs_finish_ordered_io(ordered_extent); | ||||
| } | ||||
| 
 | ||||
| static void btrfs_writepage_end_io_hook(struct page *page, u64 start, u64 end, | ||||
| void btrfs_writepage_endio_finish_ordered(struct page *page, u64 start, u64 end, | ||||
| 				struct extent_state *state, int uptodate) | ||||
| { | ||||
| 	struct inode *inode = page->mapping->host; | ||||
| @ -10526,7 +10526,6 @@ static const struct extent_io_ops btrfs_extent_io_ops = { | ||||
| 	.readpage_io_failed_hook = btrfs_readpage_io_failed_hook, | ||||
| 
 | ||||
| 	/* optional callbacks */ | ||||
| 	.writepage_end_io_hook = btrfs_writepage_end_io_hook, | ||||
| 	.set_bit_hook = btrfs_set_bit_hook, | ||||
| 	.clear_bit_hook = btrfs_clear_bit_hook, | ||||
| 	.merge_extent_hook = btrfs_merge_extent_hook, | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user