diff --git a/config/kernel-fmode-t.m4 b/config/kernel-fmode-t.m4 new file mode 100644 index 0000000000..cf25d81272 --- /dev/null +++ b/config/kernel-fmode-t.m4 @@ -0,0 +1,18 @@ +dnl # +dnl # 2.6.28 API change, +dnl # check if fmode_t typedef is defined +dnl # +AC_DEFUN([ZFS_AC_KERNEL_TYPE_FMODE_T], + [AC_MSG_CHECKING([whether kernel defines fmode_t]) + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + fmode_t *ptr; + ],[ + AC_MSG_RESULT([yes]) + AC_DEFINE(HAVE_FMODE_T, 1, + [kernel defines fmode_t]) + ],[ + AC_MSG_RESULT([no]) + ]) +]) diff --git a/config/kernel.m4 b/config/kernel.m4 index 801be86b62..34e0b47980 100644 --- a/config/kernel.m4 +++ b/config/kernel.m4 @@ -5,6 +5,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [ ZFS_AC_KERNEL ZFS_AC_SPL ZFS_AC_KERNEL_BDEV_BLOCK_DEVICE_OPERATIONS + ZFS_AC_KERNEL_TYPE_FMODE_T ZFS_AC_KERNEL_OPEN_BDEV_EXCLUSIVE ZFS_AC_KERNEL_INVALIDATE_BDEV_ARGS ZFS_AC_KERNEL_BDEV_LOGICAL_BLOCK_SIZE diff --git a/module/zfs/include/sys/blkdev.h b/module/zfs/include/sys/blkdev.h index 19ded8b6ba..9ad184b3ea 100644 --- a/module/zfs/include/sys/blkdev.h +++ b/module/zfs/include/sys/blkdev.h @@ -7,6 +7,10 @@ #include #include "zfs_config.h" +#ifndef HAVE_FMODE_T +typedef unsigned __bitwise__ fmode_t; +#endif /* HAVE_FMODE_T */ + #ifndef HAVE_BLK_FETCH_REQUEST static inline struct request * blk_fetch_request(struct request_queue *q) diff --git a/module/zfs/zvol.c b/module/zfs/zvol.c index af64f59349..2db17aed26 100644 --- a/module/zfs/zvol.c +++ b/module/zfs/zvol.c @@ -681,10 +681,6 @@ zvol_remove(zvol_state_t *zv_remove) list_remove(&zvol_state_list, zv_remove); } -#ifndef HAVE_BDEV_BLOCK_DEVICE_OPERATIONS -typedef unsigned __bitwise__ fmode_t; -#endif /* HAVE_BDEV_BLOCK_DEVICE_OPERATIONS */ - static int zvol_open(struct block_device *bdev, fmode_t flag) {