mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-26 03:09:34 +03:00
3.10 API change: block_device_operations->release() returns void
Linux kernel commit torvalds/linux@db2a144 changed the return type of block_device_operations->release() to void. Detect the expected prototype and defined our callout accordingly. Signed-off-by: Chris Dunlop <chris@onthe.net.au> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #1494
This commit is contained in:
parent
168d056cf8
commit
a1d9543a39
@ -10,7 +10,6 @@ AC_DEFUN([ZFS_AC_KERNEL_BDEV_BLOCK_DEVICE_OPERATIONS], [
|
|||||||
|
|
||||||
int blk_open(struct block_device *bdev, fmode_t mode)
|
int blk_open(struct block_device *bdev, fmode_t mode)
|
||||||
{ return 0; }
|
{ return 0; }
|
||||||
int blk_release(struct gendisk *g, fmode_t mode) { return 0; }
|
|
||||||
int blk_ioctl(struct block_device *bdev, fmode_t mode,
|
int blk_ioctl(struct block_device *bdev, fmode_t mode,
|
||||||
unsigned x, unsigned long y) { return 0; }
|
unsigned x, unsigned long y) { return 0; }
|
||||||
int blk_compat_ioctl(struct block_device * bdev, fmode_t mode,
|
int blk_compat_ioctl(struct block_device * bdev, fmode_t mode,
|
||||||
@ -19,7 +18,7 @@ AC_DEFUN([ZFS_AC_KERNEL_BDEV_BLOCK_DEVICE_OPERATIONS], [
|
|||||||
static const struct block_device_operations
|
static const struct block_device_operations
|
||||||
bops __attribute__ ((unused)) = {
|
bops __attribute__ ((unused)) = {
|
||||||
.open = blk_open,
|
.open = blk_open,
|
||||||
.release = blk_release,
|
.release = NULL,
|
||||||
.ioctl = blk_ioctl,
|
.ioctl = blk_ioctl,
|
||||||
.compat_ioctl = blk_compat_ioctl,
|
.compat_ioctl = blk_compat_ioctl,
|
||||||
};
|
};
|
||||||
|
29
config/kernel-block-device-operations-release-void.m4
Normal file
29
config/kernel-block-device-operations-release-void.m4
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
dnl #
|
||||||
|
dnl # 3.10.x API change
|
||||||
|
dnl #
|
||||||
|
AC_DEFUN([ZFS_AC_KERNEL_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID], [
|
||||||
|
AC_MSG_CHECKING([whether block_device_operations.release is void])
|
||||||
|
tmp_flags="$EXTRA_KCFLAGS"
|
||||||
|
EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}"
|
||||||
|
ZFS_LINUX_TRY_COMPILE([
|
||||||
|
#include <linux/blkdev.h>
|
||||||
|
|
||||||
|
void blk_release(struct gendisk *g, fmode_t mode) { return; }
|
||||||
|
|
||||||
|
static const struct block_device_operations
|
||||||
|
bops __attribute__ ((unused)) = {
|
||||||
|
.open = NULL,
|
||||||
|
.release = blk_release,
|
||||||
|
.ioctl = NULL,
|
||||||
|
.compat_ioctl = NULL,
|
||||||
|
};
|
||||||
|
],[
|
||||||
|
],[
|
||||||
|
AC_MSG_RESULT(void)
|
||||||
|
AC_DEFINE(HAVE_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID, 1,
|
||||||
|
[struct block_device_operations.release returns void])
|
||||||
|
],[
|
||||||
|
AC_MSG_RESULT(int)
|
||||||
|
])
|
||||||
|
EXTRA_KCFLAGS="$tmp_flags"
|
||||||
|
])
|
@ -7,6 +7,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
|
|||||||
ZFS_AC_TEST_MODULE
|
ZFS_AC_TEST_MODULE
|
||||||
ZFS_AC_KERNEL_CONFIG
|
ZFS_AC_KERNEL_CONFIG
|
||||||
ZFS_AC_KERNEL_BDEV_BLOCK_DEVICE_OPERATIONS
|
ZFS_AC_KERNEL_BDEV_BLOCK_DEVICE_OPERATIONS
|
||||||
|
ZFS_AC_KERNEL_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID
|
||||||
ZFS_AC_KERNEL_TYPE_FMODE_T
|
ZFS_AC_KERNEL_TYPE_FMODE_T
|
||||||
ZFS_AC_KERNEL_KOBJ_NAME_LEN
|
ZFS_AC_KERNEL_KOBJ_NAME_LEN
|
||||||
ZFS_AC_KERNEL_3ARG_BLKDEV_GET
|
ZFS_AC_KERNEL_3ARG_BLKDEV_GET
|
||||||
|
@ -1024,7 +1024,11 @@ out_mutex:
|
|||||||
return (error);
|
return (error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID
|
||||||
|
static void
|
||||||
|
#else
|
||||||
static int
|
static int
|
||||||
|
#endif
|
||||||
zvol_release(struct gendisk *disk, fmode_t mode)
|
zvol_release(struct gendisk *disk, fmode_t mode)
|
||||||
{
|
{
|
||||||
zvol_state_t *zv = disk->private_data;
|
zvol_state_t *zv = disk->private_data;
|
||||||
@ -1044,7 +1048,9 @@ zvol_release(struct gendisk *disk, fmode_t mode)
|
|||||||
if (drop_mutex)
|
if (drop_mutex)
|
||||||
mutex_exit(&zvol_state_lock);
|
mutex_exit(&zvol_state_lock);
|
||||||
|
|
||||||
|
#ifndef HAVE_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID
|
||||||
return (0);
|
return (0);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
Loading…
Reference in New Issue
Block a user