Description: Linux 7.3: bvec_iter.bi_bvec_done is now bi_offset
 Linux 7.3 renamed bvec_iter.bi_bvec_done to bi_offset (kernel commit
 b539aeacf8cc "block: rename bi_bvec_done"). Add a configure probe and use
 the right field name in the block device compat layer.
 .
 Rebased onto 2.4.4; no functional change from the upstream commit.
Author: Rob Norris <robn@despairlabs.com>
Origin: upstream, https://github.com/robn/zfs/commit/dfbff5a991761c15843352616c866dabcdbf7ffd
Forwarded: not-needed
Signed-off-by: Paolo Pisati <paolo.pisati@canonical.com>
Index: zfs-linux-2.4.4/config/kernel-bio.m4
===================================================================
--- zfs-linux-2.4.4.orig/config/kernel-bio.m4
+++ zfs-linux-2.4.4/config/kernel-bio.m4
@@ -234,6 +234,30 @@ AC_DEFUN([ZFS_AC_KERNEL_BIO_ALLOC_4ARG],
 	])
 ])
 
+dnl #
+dnl # Linux 7.3 API
+dnl #
+dnl # bi_iter.bi_bvec_done renamed to bi_iter.bi_offset
+dnl #
+AC_DEFUN([ZFS_AC_KERNEL_SRC_BVEC_ITER_OFFSET], [
+	ZFS_LINUX_TEST_SRC([bvec_iter_offset], [
+		#include <linux/bio.h>
+	],[
+		struct bvec_iter *bi = NULL;
+		unsigned int __attribute__((unused)) offset = bi->bi_offset;
+	])
+])
+
+AC_DEFUN([ZFS_AC_KERNEL_BVEC_ITER_OFFSET], [
+	AC_MSG_CHECKING([if bvec_iter has bi_offset])
+	ZFS_LINUX_TEST_RESULT([bvec_iter_offset],[
+		AC_MSG_RESULT(yes)
+		AC_DEFINE([HAVE_BVEC_ITER_OFFSET], 1, [bvec_iter has bi_offset])
+	],[
+		AC_MSG_RESULT(no)
+	])
+])
+
 AC_DEFUN([ZFS_AC_KERNEL_SRC_BIO], [
 	ZFS_AC_KERNEL_SRC_BIO_OPS
 	ZFS_AC_KERNEL_SRC_BIO_SET_DEV
@@ -243,6 +267,7 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_BIO], [
 	ZFS_AC_KERNEL_SRC_BDEV_SUBMIT_BIO_RETURNS_VOID
 	ZFS_AC_KERNEL_SRC_BIO_SET_DEV_MACRO
 	ZFS_AC_KERNEL_SRC_BIO_ALLOC_4ARG
+	ZFS_AC_KERNEL_SRC_BVEC_ITER_OFFSET
 ])
 
 AC_DEFUN([ZFS_AC_KERNEL_BIO], [
@@ -253,4 +278,5 @@ AC_DEFUN([ZFS_AC_KERNEL_BIO], [
 	ZFS_AC_KERNEL_BIO_BDEV_DISK
 	ZFS_AC_KERNEL_BDEV_SUBMIT_BIO_RETURNS_VOID
 	ZFS_AC_KERNEL_BIO_ALLOC_4ARG
+	ZFS_AC_KERNEL_BVEC_ITER_OFFSET
 ])
Index: zfs-linux-2.4.4/include/os/linux/kernel/linux/blkdev_compat.h
===================================================================
--- zfs-linux-2.4.4.orig/include/os/linux/kernel/linux/blkdev_compat.h
+++ zfs-linux-2.4.4/include/os/linux/kernel/linux/blkdev_compat.h
@@ -104,7 +104,11 @@ blk_queue_set_read_ahead(struct request_
 #define	BIO_BI_SECTOR(bio)	(bio)->bi_iter.bi_sector
 #define	BIO_BI_SIZE(bio)	(bio)->bi_iter.bi_size
 #define	BIO_BI_IDX(bio)		(bio)->bi_iter.bi_idx
+#ifdef HAVE_BVEC_ITER_OFFSET
+#define	BIO_BI_SKIP(bio)	(bio)->bi_iter.bi_offset
+#else
 #define	BIO_BI_SKIP(bio)	(bio)->bi_iter.bi_bvec_done
+#endif
 #define	bio_for_each_segment4(bv, bvp, b, i)	\
 	bio_for_each_segment((bv), (b), (i))
 typedef struct bvec_iter bvec_iterator_t;
