mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +03:00 
			
		
		
		
	Linux 5.12 compat: bio->bi_disk member moved
The struct bio member bi_disk was moved underneath a new member named bi_bdev. So all attempts to reference bio->bi_disk need to now become bio->bi_bdev->bd_disk. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Coleman Kane <ckane@colemankane.org> Closes #11639
This commit is contained in:
		
							parent
							
								
									fe77c48320
								
							
						
					
					
						commit
						a0eb5a77a0
					
				@ -369,6 +369,33 @@ AC_DEFUN([ZFS_AC_KERNEL_BLKG_TRYGET], [
 | 
				
			|||||||
	])
 | 
						])
 | 
				
			||||||
])
 | 
					])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					dnl #
 | 
				
			||||||
 | 
					dnl # Linux 5.12 API,
 | 
				
			||||||
 | 
					dnl #
 | 
				
			||||||
 | 
					dnl # The Linux 5.12 kernel updated struct bio to create a new bi_bdev member
 | 
				
			||||||
 | 
					dnl # and bio->bi_disk was moved to bio->bi_bdev->bd_disk
 | 
				
			||||||
 | 
					dnl #
 | 
				
			||||||
 | 
					AC_DEFUN([ZFS_AC_KERNEL_SRC_BIO_BDEV_DISK], [
 | 
				
			||||||
 | 
						ZFS_LINUX_TEST_SRC([bio_bdev_disk], [
 | 
				
			||||||
 | 
							#include <linux/blk_types.h>
 | 
				
			||||||
 | 
							#include <linux/blkdev.h>
 | 
				
			||||||
 | 
						],[
 | 
				
			||||||
 | 
							struct bio *b = NULL;
 | 
				
			||||||
 | 
							struct gendisk *d = b->bi_bdev->bd_disk;
 | 
				
			||||||
 | 
							blk_register_queue(d);
 | 
				
			||||||
 | 
						])
 | 
				
			||||||
 | 
					])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AC_DEFUN([ZFS_AC_KERNEL_BIO_BDEV_DISK], [
 | 
				
			||||||
 | 
						AC_MSG_CHECKING([whether bio->bi_bdev->bd_disk exists])
 | 
				
			||||||
 | 
						ZFS_LINUX_TEST_RESULT([bio_bdev_disk], [
 | 
				
			||||||
 | 
							AC_MSG_RESULT(yes)
 | 
				
			||||||
 | 
							AC_DEFINE(HAVE_BIO_BDEV_DISK, 1, [bio->bi_bdev->bd_disk exists])
 | 
				
			||||||
 | 
						],[
 | 
				
			||||||
 | 
							AC_MSG_RESULT(no)
 | 
				
			||||||
 | 
						])
 | 
				
			||||||
 | 
					])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
AC_DEFUN([ZFS_AC_KERNEL_SRC_BIO], [
 | 
					AC_DEFUN([ZFS_AC_KERNEL_SRC_BIO], [
 | 
				
			||||||
	ZFS_AC_KERNEL_SRC_REQ
 | 
						ZFS_AC_KERNEL_SRC_REQ
 | 
				
			||||||
	ZFS_AC_KERNEL_SRC_BIO_OPS
 | 
						ZFS_AC_KERNEL_SRC_BIO_OPS
 | 
				
			||||||
@ -379,6 +406,7 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_BIO], [
 | 
				
			|||||||
	ZFS_AC_KERNEL_SRC_BIO_SUBMIT_BIO
 | 
						ZFS_AC_KERNEL_SRC_BIO_SUBMIT_BIO
 | 
				
			||||||
	ZFS_AC_KERNEL_SRC_BIO_CURRENT_BIO_LIST
 | 
						ZFS_AC_KERNEL_SRC_BIO_CURRENT_BIO_LIST
 | 
				
			||||||
	ZFS_AC_KERNEL_SRC_BLKG_TRYGET
 | 
						ZFS_AC_KERNEL_SRC_BLKG_TRYGET
 | 
				
			||||||
 | 
						ZFS_AC_KERNEL_SRC_BIO_BDEV_DISK
 | 
				
			||||||
])
 | 
					])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
AC_DEFUN([ZFS_AC_KERNEL_BIO], [
 | 
					AC_DEFUN([ZFS_AC_KERNEL_BIO], [
 | 
				
			||||||
@ -400,4 +428,5 @@ AC_DEFUN([ZFS_AC_KERNEL_BIO], [
 | 
				
			|||||||
	ZFS_AC_KERNEL_BIO_SUBMIT_BIO
 | 
						ZFS_AC_KERNEL_BIO_SUBMIT_BIO
 | 
				
			||||||
	ZFS_AC_KERNEL_BIO_CURRENT_BIO_LIST
 | 
						ZFS_AC_KERNEL_BIO_CURRENT_BIO_LIST
 | 
				
			||||||
	ZFS_AC_KERNEL_BLKG_TRYGET
 | 
						ZFS_AC_KERNEL_BLKG_TRYGET
 | 
				
			||||||
 | 
						ZFS_AC_KERNEL_BIO_BDEV_DISK
 | 
				
			||||||
])
 | 
					])
 | 
				
			||||||
 | 
				
			|||||||
@ -499,7 +499,11 @@ vdev_blkg_tryget(struct blkcg_gq *blkg)
 | 
				
			|||||||
static inline void
 | 
					static inline void
 | 
				
			||||||
vdev_bio_associate_blkg(struct bio *bio)
 | 
					vdev_bio_associate_blkg(struct bio *bio)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					#if defined(HAVE_BIO_BDEV_DISK)
 | 
				
			||||||
 | 
						struct request_queue *q = bio->bi_bdev->bd_disk->queue;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
	struct request_queue *q = bio->bi_disk->queue;
 | 
						struct request_queue *q = bio->bi_disk->queue;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ASSERT3P(q, !=, NULL);
 | 
						ASSERT3P(q, !=, NULL);
 | 
				
			||||||
	ASSERT3P(bio->bi_blkg, ==, NULL);
 | 
						ASSERT3P(bio->bi_blkg, ==, NULL);
 | 
				
			||||||
 | 
				
			|||||||
@ -307,7 +307,11 @@ zvol_request(struct request_queue *q, struct bio *bio)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#ifdef HAVE_SUBMIT_BIO_IN_BLOCK_DEVICE_OPERATIONS
 | 
					#ifdef HAVE_SUBMIT_BIO_IN_BLOCK_DEVICE_OPERATIONS
 | 
				
			||||||
 | 
					#if defined(HAVE_BIO_BDEV_DISK)
 | 
				
			||||||
 | 
						struct request_queue *q = bio->bi_bdev->bd_disk->queue;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
	struct request_queue *q = bio->bi_disk->queue;
 | 
						struct request_queue *q = bio->bi_disk->queue;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
	zvol_state_t *zv = q->queuedata;
 | 
						zvol_state_t *zv = q->queuedata;
 | 
				
			||||||
	fstrans_cookie_t cookie = spl_fstrans_mark();
 | 
						fstrans_cookie_t cookie = spl_fstrans_mark();
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user