]) # LC_HAS_LINUX_SELINUX_ENABLED
#
+# LC_BIO_BI_PHYS_SEGMENTS
+#
+# kernel 5.3-rc1 commit 14ccb66b3f585b2bc21e7256c96090abed5a512c
+# block: remove the bi_phys_segments field in struct bio
+#
+AC_DEFUN([LC_BIO_BI_PHYS_SEGMENTS], [
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="-Werror"
+LB_CHECK_COMPILE([if struct bio has bi_phys_segments member],
+bye_bio_bi_phys_segments, [
+ #include <linux/bio.h>
+],[
+ struct bio *bio = NULL;
+ bio->bi_phys_segments++;
+],[
+ AC_DEFINE(HAVE_BIO_BI_PHYS_SEGMENTS, 1,
+ [struct bio has bi_phys_segments member])
+])
+EXTRA_KCFLAGS="$tmp_flags"
+]) # LC_BIO_BI_PHYS_SEGMENTS
+
+#
# LC_PROG_LINUX
#
# Lustre linux kernel checks
# 5.1
LC_HAS_LINUX_SELINUX_ENABLED
+ # 5.3
+ LC_BIO_BI_PHYS_SEGMENTS
+
# kernel patch to extend integrity interface
LC_BIO_INTEGRITY_PREP_FN
}
#endif
+#ifdef HAVE_BIO_BI_PHYS_SEGMENTS
+#define osd_bio_nr_segs(bio) ((bio)->bi_phys_segments)
+#else
+#define osd_bio_nr_segs(bio) bio_segments((bio))
+#endif /* HAVE_BIO_BI_PHYS_SEGMENTS */
+
#endif /* _OSD_INTERNAL_H */
bi_size, bio->bi_vcnt, bio->bi_max_vecs,
bio_sectors(bio),
queue_max_sectors(q),
- bio->bi_phys_segments,
+ osd_bio_nr_segs(bio),
queue_max_segments(q));
rc = osd_bio_integrity_handle(osd, bio,
iobuf, bio_start_page_idx,