mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-26 11:19:32 +03:00
config: remove HAVE_BIO_BI_STATUS and bio error compat
Sponsored-by: https://despairlabs.com/sponsor/ Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Tony Hutter <hutter2@llnl.gov> Reviewed-by: Tino Reichardt <milky-zfs@mcmilk.de> Signed-off-by: Rob Norris <robn@despairlabs.com> Closes #16479
This commit is contained in:
parent
3008e691a2
commit
f4c4df1638
@ -93,31 +93,6 @@ AC_DEFUN([ZFS_AC_KERNEL_BIO_SET_DEV], [
|
|||||||
])
|
])
|
||||||
])
|
])
|
||||||
|
|
||||||
dnl #
|
|
||||||
dnl # 4.13 API change
|
|
||||||
dnl # The bio->bi_error field was replaced with bio->bi_status which is an
|
|
||||||
dnl # enum which describes all possible error types.
|
|
||||||
dnl #
|
|
||||||
AC_DEFUN([ZFS_AC_KERNEL_SRC_BIO_BI_STATUS], [
|
|
||||||
ZFS_LINUX_TEST_SRC([bio_bi_status], [
|
|
||||||
#include <linux/bio.h>
|
|
||||||
], [
|
|
||||||
struct bio bio __attribute__ ((unused));
|
|
||||||
blk_status_t status __attribute__ ((unused)) = BLK_STS_OK;
|
|
||||||
bio.bi_status = status;
|
|
||||||
])
|
|
||||||
])
|
|
||||||
|
|
||||||
AC_DEFUN([ZFS_AC_KERNEL_BIO_BI_STATUS], [
|
|
||||||
AC_MSG_CHECKING([whether bio->bi_status exists])
|
|
||||||
ZFS_LINUX_TEST_RESULT([bio_bi_status], [
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
AC_DEFINE(HAVE_BIO_BI_STATUS, 1, [bio->bi_status exists])
|
|
||||||
],[
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
])
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl #
|
dnl #
|
||||||
dnl # 2.6.34 API change
|
dnl # 2.6.34 API change
|
||||||
dnl # current->bio_list
|
dnl # current->bio_list
|
||||||
@ -269,7 +244,6 @@ AC_DEFUN([ZFS_AC_KERNEL_BIO_ALLOC_4ARG], [
|
|||||||
AC_DEFUN([ZFS_AC_KERNEL_SRC_BIO], [
|
AC_DEFUN([ZFS_AC_KERNEL_SRC_BIO], [
|
||||||
ZFS_AC_KERNEL_SRC_BIO_OPS
|
ZFS_AC_KERNEL_SRC_BIO_OPS
|
||||||
ZFS_AC_KERNEL_SRC_BIO_SET_DEV
|
ZFS_AC_KERNEL_SRC_BIO_SET_DEV
|
||||||
ZFS_AC_KERNEL_SRC_BIO_BI_STATUS
|
|
||||||
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
|
ZFS_AC_KERNEL_SRC_BIO_BDEV_DISK
|
||||||
@ -281,7 +255,6 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_BIO], [
|
|||||||
AC_DEFUN([ZFS_AC_KERNEL_BIO], [
|
AC_DEFUN([ZFS_AC_KERNEL_BIO], [
|
||||||
ZFS_AC_KERNEL_BIO_SET_OP_ATTRS
|
ZFS_AC_KERNEL_BIO_SET_OP_ATTRS
|
||||||
ZFS_AC_KERNEL_BIO_SET_DEV
|
ZFS_AC_KERNEL_BIO_SET_DEV
|
||||||
ZFS_AC_KERNEL_BIO_BI_STATUS
|
|
||||||
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
|
ZFS_AC_KERNEL_BIO_BDEV_DISK
|
||||||
|
@ -166,7 +166,6 @@ bio_set_flags_failfast(struct block_device *bdev, int *flags, bool dev,
|
|||||||
#define DISK_NAME_LEN 32
|
#define DISK_NAME_LEN 32
|
||||||
#endif /* DISK_NAME_LEN */
|
#endif /* DISK_NAME_LEN */
|
||||||
|
|
||||||
#ifdef HAVE_BIO_BI_STATUS
|
|
||||||
static inline int
|
static inline int
|
||||||
bi_status_to_errno(blk_status_t status)
|
bi_status_to_errno(blk_status_t status)
|
||||||
{
|
{
|
||||||
@ -240,31 +239,6 @@ errno_to_bi_status(int error)
|
|||||||
return (BLK_STS_IOERR);
|
return (BLK_STS_IOERR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* HAVE_BIO_BI_STATUS */
|
|
||||||
|
|
||||||
#ifdef HAVE_BIO_BI_STATUS
|
|
||||||
#define BIO_END_IO_ERROR(bio) bi_status_to_errno(bio->bi_status)
|
|
||||||
#define BIO_END_IO_PROTO(fn, x, z) static void fn(struct bio *x)
|
|
||||||
#define BIO_END_IO(bio, error) bio_set_bi_status(bio, error)
|
|
||||||
static inline void
|
|
||||||
bio_set_bi_status(struct bio *bio, int error)
|
|
||||||
{
|
|
||||||
ASSERT3S(error, <=, 0);
|
|
||||||
bio->bi_status = errno_to_bi_status(-error);
|
|
||||||
bio_endio(bio);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
#define BIO_END_IO_ERROR(bio) (-(bio->bi_error))
|
|
||||||
#define BIO_END_IO_PROTO(fn, x, z) static void fn(struct bio *x)
|
|
||||||
#define BIO_END_IO(bio, error) bio_set_bi_error(bio, error)
|
|
||||||
static inline void
|
|
||||||
bio_set_bi_error(struct bio *bio, int error)
|
|
||||||
{
|
|
||||||
ASSERT3S(error, <=, 0);
|
|
||||||
bio->bi_error = error;
|
|
||||||
bio_endio(bio);
|
|
||||||
}
|
|
||||||
#endif /* HAVE_BIO_BI_STATUS */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 5.15 MACRO,
|
* 5.15 MACRO,
|
||||||
|
@ -697,7 +697,7 @@ vbio_alloc(zio_t *zio, struct block_device *bdev, int flags)
|
|||||||
return (vbio);
|
return (vbio);
|
||||||
}
|
}
|
||||||
|
|
||||||
BIO_END_IO_PROTO(vbio_completion, bio, error);
|
static void vbio_completion(struct bio *bio);
|
||||||
|
|
||||||
static int
|
static int
|
||||||
vbio_add_page(vbio_t *vbio, struct page *page, uint_t size, uint_t offset)
|
vbio_add_page(vbio_t *vbio, struct page *page, uint_t size, uint_t offset)
|
||||||
@ -793,7 +793,8 @@ vbio_submit(vbio_t *vbio, abd_t *abd, uint64_t size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* IO completion callback */
|
/* IO completion callback */
|
||||||
BIO_END_IO_PROTO(vbio_completion, bio, error)
|
static void
|
||||||
|
vbio_completion(struct bio *bio)
|
||||||
{
|
{
|
||||||
vbio_t *vbio = bio->bi_private;
|
vbio_t *vbio = bio->bi_private;
|
||||||
zio_t *zio = vbio->vbio_zio;
|
zio_t *zio = vbio->vbio_zio;
|
||||||
@ -801,7 +802,7 @@ BIO_END_IO_PROTO(vbio_completion, bio, error)
|
|||||||
ASSERT(zio);
|
ASSERT(zio);
|
||||||
|
|
||||||
/* Capture and log any errors */
|
/* Capture and log any errors */
|
||||||
zio->io_error = BIO_END_IO_ERROR(bio);
|
zio->io_error = bi_status_to_errno(bio->bi_status);
|
||||||
ASSERT3U(zio->io_error, >=, 0);
|
ASSERT3U(zio->io_error, >=, 0);
|
||||||
|
|
||||||
if (zio->io_error)
|
if (zio->io_error)
|
||||||
@ -1052,12 +1053,13 @@ vdev_classic_dio_put(dio_request_t *dr)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BIO_END_IO_PROTO(vdev_classic_physio_completion, bio, error)
|
static void
|
||||||
|
vdev_classic_physio_completion(struct bio *bio)
|
||||||
{
|
{
|
||||||
dio_request_t *dr = bio->bi_private;
|
dio_request_t *dr = bio->bi_private;
|
||||||
|
|
||||||
if (dr->dr_error == 0) {
|
if (dr->dr_error == 0) {
|
||||||
dr->dr_error = BIO_END_IO_ERROR(bio);
|
dr->dr_error = bi_status_to_errno(bio->bi_status);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Drop reference acquired by vdev_classic_physio */
|
/* Drop reference acquired by vdev_classic_physio */
|
||||||
@ -1196,10 +1198,11 @@ retry:
|
|||||||
|
|
||||||
/* ========== */
|
/* ========== */
|
||||||
|
|
||||||
BIO_END_IO_PROTO(vdev_disk_io_flush_completion, bio, error)
|
static void
|
||||||
|
vdev_disk_io_flush_completion(struct bio *bio)
|
||||||
{
|
{
|
||||||
zio_t *zio = bio->bi_private;
|
zio_t *zio = bio->bi_private;
|
||||||
zio->io_error = BIO_END_IO_ERROR(bio);
|
zio->io_error = bi_status_to_errno(bio->bi_status);
|
||||||
|
|
||||||
if (zio->io_error && (zio->io_error == EOPNOTSUPP))
|
if (zio->io_error && (zio->io_error == EOPNOTSUPP))
|
||||||
zio->io_vd->vdev_nowritecache = B_TRUE;
|
zio->io_vd->vdev_nowritecache = B_TRUE;
|
||||||
@ -1234,10 +1237,11 @@ vdev_disk_io_flush(struct block_device *bdev, zio_t *zio)
|
|||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
BIO_END_IO_PROTO(vdev_disk_discard_end_io, bio, error)
|
static void
|
||||||
|
vdev_disk_discard_end_io(struct bio *bio)
|
||||||
{
|
{
|
||||||
zio_t *zio = bio->bi_private;
|
zio_t *zio = bio->bi_private;
|
||||||
zio->io_error = BIO_END_IO_ERROR(bio);
|
zio->io_error = bi_status_to_errno(bio->bi_status);
|
||||||
|
|
||||||
bio_put(bio);
|
bio_put(bio);
|
||||||
if (zio->io_error)
|
if (zio->io_error)
|
||||||
|
@ -99,13 +99,17 @@ static unsigned int zvol_num_taskqs = 0;
|
|||||||
#ifdef HAVE_BLK_MQ
|
#ifdef HAVE_BLK_MQ
|
||||||
#define END_IO(zv, bio, rq, error) do { \
|
#define END_IO(zv, bio, rq, error) do { \
|
||||||
if (bio) { \
|
if (bio) { \
|
||||||
BIO_END_IO(bio, error); \
|
bio->bi_status = errno_to_bi_status(-error); \
|
||||||
|
bio_endio(bio); \
|
||||||
} else { \
|
} else { \
|
||||||
blk_mq_end_request(rq, errno_to_bi_status(error)); \
|
blk_mq_end_request(rq, errno_to_bi_status(error)); \
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
#else
|
#else
|
||||||
#define END_IO(zv, bio, rq, error) BIO_END_IO(bio, error)
|
#define END_IO(zv, bio, rq, error) do { \
|
||||||
|
bio->bi_status = errno_to_bi_status(-error); \
|
||||||
|
bio_endio(bio); \
|
||||||
|
} while (0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_BLK_MQ
|
#ifdef HAVE_BLK_MQ
|
||||||
|
Loading…
Reference in New Issue
Block a user