mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 18:40:43 +03:00
Support the fallocate() file operation.
Currently only the (FALLOC_FL_PUNCH_HOLE) flag combination is supported, since it's the only one that matches the behavior of zfs_space(). This makes it pretty much useless in its current form, but it's a start. To support other flag combinations we would need to modify zfs_space() to make it more flexible, or emulate the desired functionality in zpl_fallocate(). Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Issue #334
This commit is contained in:
committed by
Brian Behlendorf
parent
aec69371a6
commit
cb2d19010d
@@ -0,0 +1,48 @@
|
||||
dnl #
|
||||
dnl # Linux 2.6.38 - 3.x API
|
||||
dnl #
|
||||
AC_DEFUN([ZFS_AC_KERNEL_FILE_FALLOCATE], [
|
||||
AC_MSG_CHECKING([whether fops->fallocate() exists])
|
||||
ZFS_LINUX_TRY_COMPILE([
|
||||
#include <linux/fs.h>
|
||||
],[
|
||||
long (*fallocate) (struct file *, int, loff_t, loff_t) = NULL;
|
||||
struct file_operations fops __attribute__ ((unused)) = {
|
||||
.fallocate = fallocate,
|
||||
};
|
||||
],[
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(HAVE_FILE_FALLOCATE, 1, [fops->fallocate() exists])
|
||||
],[
|
||||
AC_MSG_RESULT(no)
|
||||
])
|
||||
])
|
||||
|
||||
dnl #
|
||||
dnl # Linux 2.6.x - 2.6.37 API
|
||||
dnl #
|
||||
AC_DEFUN([ZFS_AC_KERNEL_INODE_FALLOCATE], [
|
||||
AC_MSG_CHECKING([whether iops->fallocate() exists])
|
||||
ZFS_LINUX_TRY_COMPILE([
|
||||
#include <linux/fs.h>
|
||||
],[
|
||||
long (*fallocate) (struct inode *, int, loff_t, loff_t) = NULL;
|
||||
struct inode_operations fops __attribute__ ((unused)) = {
|
||||
.fallocate = fallocate,
|
||||
};
|
||||
],[
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(HAVE_INODE_FALLOCATE, 1, [fops->fallocate() exists])
|
||||
],[
|
||||
AC_MSG_RESULT(no)
|
||||
])
|
||||
])
|
||||
|
||||
dnl #
|
||||
dnl # The fallocate callback was moved from the inode_operations
|
||||
dnl # structure to the file_operations structure.
|
||||
dnl #
|
||||
AC_DEFUN([ZFS_AC_KERNEL_FALLOCATE], [
|
||||
ZFS_AC_KERNEL_FILE_FALLOCATE
|
||||
ZFS_AC_KERNEL_INODE_FALLOCATE
|
||||
])
|
||||
@@ -43,6 +43,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
|
||||
ZFS_AC_KERNEL_EVICT_INODE
|
||||
ZFS_AC_KERNEL_NR_CACHED_OBJECTS
|
||||
ZFS_AC_KERNEL_FREE_CACHED_OBJECTS
|
||||
ZFS_AC_KERNEL_FALLOCATE
|
||||
ZFS_AC_KERNEL_INSERT_INODE_LOCKED
|
||||
ZFS_AC_KERNEL_D_OBTAIN_ALIAS
|
||||
ZFS_AC_KERNEL_CHECK_DISK_SIZE_CHANGE
|
||||
|
||||
Reference in New Issue
Block a user