mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2025-01-27 10:24:22 +03:00
config: remove HAVE_FSYNC_RANGE
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
6a1d8a9cf0
commit
7af642af4d
@ -1,53 +0,0 @@
|
||||
dnl #
|
||||
dnl # Check file_operations->fsync interface.
|
||||
dnl #
|
||||
AC_DEFUN([ZFS_AC_KERNEL_SRC_FSYNC], [
|
||||
ZFS_LINUX_TEST_SRC([fsync_without_dentry], [
|
||||
#include <linux/fs.h>
|
||||
|
||||
static int test_fsync(struct file *f, int x) { return 0; }
|
||||
|
||||
static const struct file_operations
|
||||
fops __attribute__ ((unused)) = {
|
||||
.fsync = test_fsync,
|
||||
};
|
||||
],[])
|
||||
|
||||
ZFS_LINUX_TEST_SRC([fsync_range], [
|
||||
#include <linux/fs.h>
|
||||
|
||||
static int test_fsync(struct file *f, loff_t a, loff_t b, int c)
|
||||
{ return 0; }
|
||||
|
||||
static const struct file_operations
|
||||
fops __attribute__ ((unused)) = {
|
||||
.fsync = test_fsync,
|
||||
};
|
||||
],[])
|
||||
])
|
||||
|
||||
AC_DEFUN([ZFS_AC_KERNEL_FSYNC], [
|
||||
dnl #
|
||||
dnl # Linux 2.6.35 - Linux 3.0 API
|
||||
dnl #
|
||||
AC_MSG_CHECKING([whether fops->fsync() wants no dentry])
|
||||
ZFS_LINUX_TEST_RESULT([fsync_without_dentry], [
|
||||
AC_MSG_RESULT([yes])
|
||||
AC_DEFINE(HAVE_FSYNC_WITHOUT_DENTRY, 1,
|
||||
[fops->fsync() without dentry])
|
||||
],[
|
||||
AC_MSG_RESULT([no])
|
||||
|
||||
dnl #
|
||||
dnl # Linux 3.1 - 3.x API
|
||||
dnl #
|
||||
AC_MSG_CHECKING([whether fops->fsync() wants range])
|
||||
ZFS_LINUX_TEST_RESULT([fsync_range], [
|
||||
AC_MSG_RESULT([range])
|
||||
AC_DEFINE(HAVE_FSYNC_RANGE, 1,
|
||||
[fops->fsync() with range])
|
||||
],[
|
||||
ZFS_LINUX_TEST_ERROR([fops->fsync])
|
||||
])
|
||||
])
|
||||
])
|
@ -75,7 +75,6 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_SRC], [
|
||||
ZFS_AC_KERNEL_SRC_INODE_SET_IVERSION
|
||||
ZFS_AC_KERNEL_SRC_SHOW_OPTIONS
|
||||
ZFS_AC_KERNEL_SRC_FILEMAP
|
||||
ZFS_AC_KERNEL_SRC_FSYNC
|
||||
ZFS_AC_KERNEL_SRC_AIO_FSYNC
|
||||
ZFS_AC_KERNEL_SRC_SHRINKER
|
||||
ZFS_AC_KERNEL_SRC_MKDIR
|
||||
@ -221,7 +220,6 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_RESULT], [
|
||||
ZFS_AC_KERNEL_INODE_SET_IVERSION
|
||||
ZFS_AC_KERNEL_SHOW_OPTIONS
|
||||
ZFS_AC_KERNEL_FILEMAP
|
||||
ZFS_AC_KERNEL_FSYNC
|
||||
ZFS_AC_KERNEL_AIO_FSYNC
|
||||
ZFS_AC_KERNEL_SHRINKER
|
||||
ZFS_AC_KERNEL_MKDIR
|
||||
|
@ -3767,8 +3767,7 @@ zfs_putpage(struct inode *ip, struct page *pp, struct writeback_control *wbc,
|
||||
/*
|
||||
* Speed up any non-sync page writebacks since
|
||||
* they may take several seconds to complete.
|
||||
* Refer to the comment in zpl_fsync() (when
|
||||
* HAVE_FSYNC_RANGE is defined) for details.
|
||||
* Refer to the comment in zpl_fsync() for details.
|
||||
*/
|
||||
if (atomic_load_32(&zp->z_async_writes_cnt) > 0) {
|
||||
zil_commit(zfsvfs->z_log, zp->z_id);
|
||||
|
@ -124,47 +124,6 @@ zpl_readdir(struct file *filp, void *dirent, filldir_t filldir)
|
||||
}
|
||||
#endif /* !HAVE_VFS_ITERATE && !HAVE_VFS_ITERATE_SHARED */
|
||||
|
||||
#if defined(HAVE_FSYNC_WITHOUT_DENTRY)
|
||||
/*
|
||||
* Linux 2.6.35 - 3.0 API,
|
||||
* As of 2.6.35 the dentry argument to the fops->fsync() hook was deemed
|
||||
* redundant. The dentry is still accessible via filp->f_path.dentry,
|
||||
* and we are guaranteed that filp will never be NULL.
|
||||
*/
|
||||
static int
|
||||
zpl_fsync(struct file *filp, int datasync)
|
||||
{
|
||||
struct inode *inode = filp->f_mapping->host;
|
||||
cred_t *cr = CRED();
|
||||
int error;
|
||||
fstrans_cookie_t cookie;
|
||||
|
||||
crhold(cr);
|
||||
cookie = spl_fstrans_mark();
|
||||
error = -zfs_fsync(ITOZ(inode), datasync, cr);
|
||||
spl_fstrans_unmark(cookie);
|
||||
crfree(cr);
|
||||
ASSERT3S(error, <=, 0);
|
||||
|
||||
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 API,
|
||||
* As of 3.1 the responsibility to call filemap_write_and_wait_range() has
|
||||
* been pushed down in to the .fsync() vfs hook. Additionally, the i_mutex
|
||||
* lock is no longer held by the caller, for zfs we don't require the lock
|
||||
* to be held so we don't acquire it.
|
||||
*/
|
||||
static int
|
||||
zpl_fsync(struct file *filp, loff_t start, loff_t end, int datasync)
|
||||
{
|
||||
@ -237,10 +196,6 @@ zpl_aio_fsync(struct kiocb *kiocb, int datasync)
|
||||
}
|
||||
#endif
|
||||
|
||||
#else
|
||||
#error "Unsupported fops->fsync() implementation"
|
||||
#endif
|
||||
|
||||
static inline int
|
||||
zfs_io_flags(struct kiocb *kiocb)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user