mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-25 02:49:32 +03:00
Kernel 4.9 compat: file_operations->aio_fsync removal
Linux kernel commit 723c038475b78 removed this field. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: DHE <git@dehacked.net> Closes #5393
This commit is contained in:
parent
6146e17ebe
commit
7ca25051b6
21
config/kernel-aio-fsync.m4
Normal file
21
config/kernel-aio-fsync.m4
Normal file
@ -0,0 +1,21 @@
|
||||
dnl #
|
||||
dnl # Linux 4.9-rc5+ ABI, removal of the .aio_fsync field
|
||||
dnl #
|
||||
AC_DEFUN([ZFS_AC_KERNEL_AIO_FSYNC], [
|
||||
AC_MSG_CHECKING([whether fops->aio_fsync() exists])
|
||||
ZFS_LINUX_TRY_COMPILE([
|
||||
#include <linux/fs.h>
|
||||
|
||||
static const struct file_operations
|
||||
fops __attribute__ ((unused)) = {
|
||||
.aio_fsync = NULL,
|
||||
};
|
||||
],[
|
||||
],[
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(HAVE_FILE_AIO_FSYNC, 1, [fops->aio_fsync() exists])
|
||||
],[
|
||||
AC_MSG_RESULT(no)
|
||||
])
|
||||
])
|
||||
|
@ -66,6 +66,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
|
||||
ZFS_AC_KERNEL_NR_CACHED_OBJECTS
|
||||
ZFS_AC_KERNEL_FREE_CACHED_OBJECTS
|
||||
ZFS_AC_KERNEL_FALLOCATE
|
||||
ZFS_AC_KERNEL_AIO_FSYNC
|
||||
ZFS_AC_KERNEL_MKDIR_UMODE_T
|
||||
ZFS_AC_KERNEL_LOOKUP_NAMEIDATA
|
||||
ZFS_AC_KERNEL_CREATE_NAMEIDATA
|
||||
|
@ -130,12 +130,15 @@ zpl_fsync(struct file *filp, struct dentry *dentry, int datasync)
|
||||
return (error);
|
||||
}
|
||||
|
||||
#ifdef HAVE_FILE_AIO_FSYNC
|
||||
static int
|
||||
zpl_aio_fsync(struct kiocb *kiocb, int datasync)
|
||||
{
|
||||
struct file *filp = kiocb->ki_filp;
|
||||
return (zpl_fsync(filp, file_dentry(filp), datasync));
|
||||
}
|
||||
#endif
|
||||
|
||||
#elif defined(HAVE_FSYNC_WITHOUT_DENTRY)
|
||||
/*
|
||||
* Linux 2.6.35 - 3.0 API,
|
||||
@ -161,11 +164,14 @@ zpl_fsync(struct file *filp, int datasync)
|
||||
return (error);
|
||||
}
|
||||
|
||||
#ifdef HAVE_FILE_AIO_FSYNC
|
||||
static int
|
||||
zpl_aio_fsync(struct kiocb *kiocb, int datasync)
|
||||
{
|
||||
return (zpl_fsync(kiocb->ki_filp, datasync));
|
||||
}
|
||||
#endif
|
||||
|
||||
#elif defined(HAVE_FSYNC_RANGE)
|
||||
/*
|
||||
* Linux 3.1 - 3.x API,
|
||||
@ -196,11 +202,14 @@ zpl_fsync(struct file *filp, loff_t start, loff_t end, int datasync)
|
||||
return (error);
|
||||
}
|
||||
|
||||
#ifdef HAVE_FILE_AIO_FSYNC
|
||||
static int
|
||||
zpl_aio_fsync(struct kiocb *kiocb, int datasync)
|
||||
{
|
||||
return (zpl_fsync(kiocb->ki_filp, kiocb->ki_pos, -1, datasync));
|
||||
}
|
||||
#endif
|
||||
|
||||
#else
|
||||
#error "Unsupported fops->fsync() implementation"
|
||||
#endif
|
||||
@ -838,7 +847,9 @@ const struct file_operations zpl_file_operations = {
|
||||
#endif
|
||||
.mmap = zpl_mmap,
|
||||
.fsync = zpl_fsync,
|
||||
#ifdef HAVE_FILE_AIO_FSYNC
|
||||
.aio_fsync = zpl_aio_fsync,
|
||||
#endif
|
||||
#ifdef HAVE_FILE_FALLOCATE
|
||||
.fallocate = zpl_fallocate,
|
||||
#endif /* HAVE_FILE_FALLOCATE */
|
||||
|
Loading…
Reference in New Issue
Block a user