mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +03:00 
			
		
		
		
	linux 5.13 compat: bdevops->revalidate_disk() removed
Linux kernel commit 0f00b82e5413571ed225ddbccad6882d7ea60bc7 removes the revalidate_disk() handler from struct block_device_operations. This caused a regression, and this commit eliminates the call to it and the assignment in the block_device_operations static handler assignment code, when configure identifies that the kernel doesn't support that API handler. Reviewed-by: Colin Ian King <colin.king@canonical.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Coleman Kane <ckane@colemankane.org> Closes #11967 Closes #11977
This commit is contained in:
		
							parent
							
								
									1cb517aebd
								
							
						
					
					
						commit
						17351a79e2
					
				| @ -52,12 +52,44 @@ AC_DEFUN([ZFS_AC_KERNEL_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID], [ | ||||
| 	]) | ||||
| ]) | ||||
| 
 | ||||
| dnl # | ||||
| dnl # 5.13 API change | ||||
| dnl # block_device_operations->revalidate_disk() was removed | ||||
| dnl # | ||||
| AC_DEFUN([ZFS_AC_KERNEL_SRC_BLOCK_DEVICE_OPERATIONS_REVALIDATE_DISK], [ | ||||
| 	ZFS_LINUX_TEST_SRC([block_device_operations_revalidate_disk], [ | ||||
| 		#include <linux/blkdev.h> | ||||
| 
 | ||||
| 		int blk_revalidate_disk(struct gendisk *disk) { | ||||
| 			return(0); | ||||
| 		} | ||||
| 
 | ||||
| 		static const struct block_device_operations | ||||
| 		    bops __attribute__ ((unused)) = { | ||||
| 			.revalidate_disk	= blk_revalidate_disk, | ||||
| 		}; | ||||
| 	], [], [$NO_UNUSED_BUT_SET_VARIABLE]) | ||||
| ]) | ||||
| 
 | ||||
| AC_DEFUN([ZFS_AC_KERNEL_BLOCK_DEVICE_OPERATIONS_REVALIDATE_DISK], [ | ||||
| 	AC_MSG_CHECKING([whether bops->revalidate_disk() exists]) | ||||
| 	ZFS_LINUX_TEST_RESULT([block_device_operations_revalidate_disk], [ | ||||
| 		AC_DEFINE([HAVE_BLOCK_DEVICE_OPERATIONS_REVALIDATE_DISK], [1], | ||||
| 			[Define if revalidate_disk() in block_device_operations]) | ||||
| 		AC_MSG_RESULT(yes) | ||||
| 	],[ | ||||
| 		AC_MSG_RESULT(no) | ||||
| 	]) | ||||
| ]) | ||||
| 
 | ||||
| AC_DEFUN([ZFS_AC_KERNEL_SRC_BLOCK_DEVICE_OPERATIONS], [ | ||||
| 	ZFS_AC_KERNEL_SRC_BLOCK_DEVICE_OPERATIONS_CHECK_EVENTS | ||||
| 	ZFS_AC_KERNEL_SRC_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID | ||||
| 	ZFS_AC_KERNEL_SRC_BLOCK_DEVICE_OPERATIONS_REVALIDATE_DISK | ||||
| ]) | ||||
| 
 | ||||
| AC_DEFUN([ZFS_AC_KERNEL_BLOCK_DEVICE_OPERATIONS], [ | ||||
| 	ZFS_AC_KERNEL_BLOCK_DEVICE_OPERATIONS_CHECK_EVENTS | ||||
| 	ZFS_AC_KERNEL_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID | ||||
| 	ZFS_AC_KERNEL_BLOCK_DEVICE_OPERATIONS_REVALIDATE_DISK | ||||
| ]) | ||||
|  | ||||
| @ -277,18 +277,22 @@ bio_set_bi_error(struct bio *bio, int error) | ||||
| static inline int | ||||
| zfs_check_media_change(struct block_device *bdev) | ||||
| { | ||||
| #ifdef HAVE_BLOCK_DEVICE_OPERATIONS_REVALIDATE_DISK | ||||
| 	struct gendisk *gd = bdev->bd_disk; | ||||
| 	const struct block_device_operations *bdo = gd->fops; | ||||
| #endif | ||||
| 
 | ||||
| 	if (!bdev_check_media_change(bdev)) | ||||
| 		return (0); | ||||
| 
 | ||||
| #ifdef HAVE_BLOCK_DEVICE_OPERATIONS_REVALIDATE_DISK | ||||
| 	/*
 | ||||
| 	 * Force revalidation, to mimic the old behavior of | ||||
| 	 * check_disk_change() | ||||
| 	 */ | ||||
| 	if (bdo->revalidate_disk) | ||||
| 		bdo->revalidate_disk(gd); | ||||
| #endif | ||||
| 
 | ||||
| 	return (0); | ||||
| } | ||||
|  | ||||
| @ -756,7 +756,9 @@ static struct block_device_operations zvol_ops = { | ||||
| 	.ioctl			= zvol_ioctl, | ||||
| 	.compat_ioctl		= zvol_compat_ioctl, | ||||
| 	.check_events		= zvol_check_events, | ||||
| #ifdef HAVE_BLOCK_DEVICE_OPERATIONS_REVALIDATE_DISK | ||||
| 	.revalidate_disk	= zvol_revalidate_disk, | ||||
| #endif | ||||
| 	.getgeo			= zvol_getgeo, | ||||
| 	.owner			= THIS_MODULE, | ||||
| #ifdef HAVE_SUBMIT_BIO_IN_BLOCK_DEVICE_OPERATIONS | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Coleman Kane
						Coleman Kane