From a5e046eaacad20487188c9eef231554e1401d8c9 Mon Sep 17 00:00:00 2001 From: Tim Chase Date: Fri, 30 Dec 2016 16:03:59 -0600 Subject: 4.10 compat - BIO flag changes and others [bio] The req_op enum was changed to req_opf. Update the "Linux 4.8 API" autotools checks to use an int to determine whether the various REQ_OP values are defined. This should work properly on kernels >= 4.8. [bio] bio_set_op_attrs() is now an inline function and can't be detected with #ifdef. Add a configure check to determine whether bio_set_op_attrs() is defined. Move the local definition of it from vdev_disk.c to blkdev_compat.h for consistency with other related compability shims. [bio] The read/write flags and their modifiers, including WRITE_FLUSH, WRITE_FUA and WRITE_FLUSH_FUA have been removed from fs.h. Add the new bio_set_flush() compatibility wrapper to replace VDEV_WRITE_FLUSH_FUA and set the flags appropriately for each supported kernel version. [vfs] The generic_readlink() function has been made static. If .readlink in inode_operations is NULL, generic_readlink() is used. [zol typo] Completely unrelated to 4.10 compat, fix a typo in the check for REQ_OP_SECURE_ERASE so that the proper macro is defined: s/HAVE_REQ_OP_SECURE_DISCARD/HAVE_REQ_OP_SECURE_ERASE/ Reviewed-by: Brian Behlendorf Reviewed-by: Chunwei Chen Signed-off-by: Tim Chase Closes #5499 --- module/zfs/vdev_disk.c | 7 +------ module/zfs/zpl_inode.c | 2 ++ 2 files changed, 3 insertions(+), 6 deletions(-) (limited to 'module/zfs') diff --git a/module/zfs/vdev_disk.c b/module/zfs/vdev_disk.c index 35041a4f3..d096d754f 100644 --- a/module/zfs/vdev_disk.c +++ b/module/zfs/vdev_disk.c @@ -488,11 +488,6 @@ bio_map_abd_off(struct bio *bio, abd_t *abd, unsigned int size, size_t off) return (abd_scatter_bio_map_off(bio, abd, size, off)); } -#ifndef bio_set_op_attrs -#define bio_set_op_attrs(bio, rw, flags) \ - do { (bio)->bi_rw |= (rw)|(flags); } while (0) -#endif - static inline void vdev_submit_bio_impl(struct bio *bio) { @@ -659,7 +654,7 @@ vdev_disk_io_flush(struct block_device *bdev, zio_t *zio) bio->bi_end_io = vdev_disk_io_flush_completion; bio->bi_private = zio; bio->bi_bdev = bdev; - bio_set_op_attrs(bio, 0, VDEV_WRITE_FLUSH_FUA); + bio_set_flush(bio); vdev_submit_bio(bio); invalidate_bdev(bdev); diff --git a/module/zfs/zpl_inode.c b/module/zfs/zpl_inode.c index afbf76dfe..9d439db74 100644 --- a/module/zfs/zpl_inode.c +++ b/module/zfs/zpl_inode.c @@ -770,7 +770,9 @@ const struct inode_operations zpl_dir_inode_operations = { }; const struct inode_operations zpl_symlink_inode_operations = { +#ifdef HAVE_GENERIC_READLINK .readlink = generic_readlink, +#endif #if defined(HAVE_GET_LINK_DELAYED) || defined(HAVE_GET_LINK_COOKIE) .get_link = zpl_get_link, #elif defined(HAVE_FOLLOW_LINK_COOKIE) || defined(HAVE_FOLLOW_LINK_NAMEIDATA) -- cgit v1.2.3