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:
parent
aec69371a6
commit
cb2d19010d
|
@ -86,6 +86,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -63,6 +63,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -66,6 +66,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -65,6 +65,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -66,6 +66,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -66,6 +66,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -66,6 +66,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -66,6 +66,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -66,6 +66,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -65,6 +65,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -65,6 +65,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -66,6 +66,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -66,6 +66,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -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_EVICT_INODE
|
||||||
ZFS_AC_KERNEL_NR_CACHED_OBJECTS
|
ZFS_AC_KERNEL_NR_CACHED_OBJECTS
|
||||||
ZFS_AC_KERNEL_FREE_CACHED_OBJECTS
|
ZFS_AC_KERNEL_FREE_CACHED_OBJECTS
|
||||||
|
ZFS_AC_KERNEL_FALLOCATE
|
||||||
ZFS_AC_KERNEL_INSERT_INODE_LOCKED
|
ZFS_AC_KERNEL_INSERT_INODE_LOCKED
|
||||||
ZFS_AC_KERNEL_D_OBTAIN_ALIAS
|
ZFS_AC_KERNEL_D_OBTAIN_ALIAS
|
||||||
ZFS_AC_KERNEL_CHECK_DISK_SIZE_CHANGE
|
ZFS_AC_KERNEL_CHECK_DISK_SIZE_CHANGE
|
||||||
|
|
|
@ -15469,6 +15469,144 @@ fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{ $as_echo "$as_me:$LINENO: checking whether fops->fallocate() exists" >&5
|
||||||
|
$as_echo_n "checking whether fops->fallocate() exists... " >&6; }
|
||||||
|
|
||||||
|
|
||||||
|
cat confdefs.h - <<_ACEOF >conftest.c
|
||||||
|
/* confdefs.h. */
|
||||||
|
_ACEOF
|
||||||
|
cat confdefs.h >>conftest.$ac_ext
|
||||||
|
cat >>conftest.$ac_ext <<_ACEOF
|
||||||
|
/* end confdefs.h. */
|
||||||
|
|
||||||
|
|
||||||
|
#include <linux/fs.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
main (void)
|
||||||
|
{
|
||||||
|
|
||||||
|
long (*fallocate) (struct file *, int, loff_t, loff_t) = NULL;
|
||||||
|
struct file_operations fops __attribute__ ((unused)) = {
|
||||||
|
.fallocate = fallocate,
|
||||||
|
};
|
||||||
|
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
|
|
||||||
|
rm -Rf build && mkdir -p build
|
||||||
|
echo "obj-m := conftest.o" >build/Makefile
|
||||||
|
if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build'
|
||||||
|
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||||
|
(eval $ac_try) 2>&5
|
||||||
|
ac_status=$?
|
||||||
|
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||||
|
(exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
|
||||||
|
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||||
|
(eval $ac_try) 2>&5
|
||||||
|
ac_status=$?
|
||||||
|
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||||
|
(exit $ac_status); }; }; then
|
||||||
|
|
||||||
|
{ $as_echo "$as_me:$LINENO: result: yes" >&5
|
||||||
|
$as_echo "yes" >&6; }
|
||||||
|
|
||||||
|
cat >>confdefs.h <<\_ACEOF
|
||||||
|
#define HAVE_FILE_FALLOCATE 1
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
|
|
||||||
|
else
|
||||||
|
$as_echo "$as_me: failed program was:" >&5
|
||||||
|
sed 's/^/| /' conftest.$ac_ext >&5
|
||||||
|
|
||||||
|
{ $as_echo "$as_me:$LINENO: result: no" >&5
|
||||||
|
$as_echo "no" >&6; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -Rf build
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{ $as_echo "$as_me:$LINENO: checking whether iops->fallocate() exists" >&5
|
||||||
|
$as_echo_n "checking whether iops->fallocate() exists... " >&6; }
|
||||||
|
|
||||||
|
|
||||||
|
cat confdefs.h - <<_ACEOF >conftest.c
|
||||||
|
/* confdefs.h. */
|
||||||
|
_ACEOF
|
||||||
|
cat confdefs.h >>conftest.$ac_ext
|
||||||
|
cat >>conftest.$ac_ext <<_ACEOF
|
||||||
|
/* end confdefs.h. */
|
||||||
|
|
||||||
|
|
||||||
|
#include <linux/fs.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
main (void)
|
||||||
|
{
|
||||||
|
|
||||||
|
long (*fallocate) (struct inode *, int, loff_t, loff_t) = NULL;
|
||||||
|
struct inode_operations fops __attribute__ ((unused)) = {
|
||||||
|
.fallocate = fallocate,
|
||||||
|
};
|
||||||
|
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
|
|
||||||
|
rm -Rf build && mkdir -p build
|
||||||
|
echo "obj-m := conftest.o" >build/Makefile
|
||||||
|
if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build'
|
||||||
|
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||||
|
(eval $ac_try) 2>&5
|
||||||
|
ac_status=$?
|
||||||
|
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||||
|
(exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
|
||||||
|
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||||
|
(eval $ac_try) 2>&5
|
||||||
|
ac_status=$?
|
||||||
|
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||||
|
(exit $ac_status); }; }; then
|
||||||
|
|
||||||
|
{ $as_echo "$as_me:$LINENO: result: yes" >&5
|
||||||
|
$as_echo "yes" >&6; }
|
||||||
|
|
||||||
|
cat >>confdefs.h <<\_ACEOF
|
||||||
|
#define HAVE_INODE_FALLOCATE 1
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
|
|
||||||
|
else
|
||||||
|
$as_echo "$as_me: failed program was:" >&5
|
||||||
|
sed 's/^/| /' conftest.$ac_ext >&5
|
||||||
|
|
||||||
|
{ $as_echo "$as_me:$LINENO: result: no" >&5
|
||||||
|
$as_echo "no" >&6; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -Rf build
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{ $as_echo "$as_me:$LINENO: checking whether symbol insert_inode_locked is exported" >&5
|
{ $as_echo "$as_me:$LINENO: checking whether symbol insert_inode_locked is exported" >&5
|
||||||
$as_echo_n "checking whether symbol insert_inode_locked is exported... " >&6; }
|
$as_echo_n "checking whether symbol insert_inode_locked is exported... " >&6; }
|
||||||
grep -q -E '[[:space:]]insert_inode_locked[[:space:]]' \
|
grep -q -E '[[:space:]]insert_inode_locked[[:space:]]' \
|
||||||
|
@ -21149,6 +21287,144 @@ fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{ $as_echo "$as_me:$LINENO: checking whether fops->fallocate() exists" >&5
|
||||||
|
$as_echo_n "checking whether fops->fallocate() exists... " >&6; }
|
||||||
|
|
||||||
|
|
||||||
|
cat confdefs.h - <<_ACEOF >conftest.c
|
||||||
|
/* confdefs.h. */
|
||||||
|
_ACEOF
|
||||||
|
cat confdefs.h >>conftest.$ac_ext
|
||||||
|
cat >>conftest.$ac_ext <<_ACEOF
|
||||||
|
/* end confdefs.h. */
|
||||||
|
|
||||||
|
|
||||||
|
#include <linux/fs.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
main (void)
|
||||||
|
{
|
||||||
|
|
||||||
|
long (*fallocate) (struct file *, int, loff_t, loff_t) = NULL;
|
||||||
|
struct file_operations fops __attribute__ ((unused)) = {
|
||||||
|
.fallocate = fallocate,
|
||||||
|
};
|
||||||
|
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
|
|
||||||
|
rm -Rf build && mkdir -p build
|
||||||
|
echo "obj-m := conftest.o" >build/Makefile
|
||||||
|
if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build'
|
||||||
|
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||||
|
(eval $ac_try) 2>&5
|
||||||
|
ac_status=$?
|
||||||
|
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||||
|
(exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
|
||||||
|
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||||
|
(eval $ac_try) 2>&5
|
||||||
|
ac_status=$?
|
||||||
|
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||||
|
(exit $ac_status); }; }; then
|
||||||
|
|
||||||
|
{ $as_echo "$as_me:$LINENO: result: yes" >&5
|
||||||
|
$as_echo "yes" >&6; }
|
||||||
|
|
||||||
|
cat >>confdefs.h <<\_ACEOF
|
||||||
|
#define HAVE_FILE_FALLOCATE 1
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
|
|
||||||
|
else
|
||||||
|
$as_echo "$as_me: failed program was:" >&5
|
||||||
|
sed 's/^/| /' conftest.$ac_ext >&5
|
||||||
|
|
||||||
|
{ $as_echo "$as_me:$LINENO: result: no" >&5
|
||||||
|
$as_echo "no" >&6; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -Rf build
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{ $as_echo "$as_me:$LINENO: checking whether iops->fallocate() exists" >&5
|
||||||
|
$as_echo_n "checking whether iops->fallocate() exists... " >&6; }
|
||||||
|
|
||||||
|
|
||||||
|
cat confdefs.h - <<_ACEOF >conftest.c
|
||||||
|
/* confdefs.h. */
|
||||||
|
_ACEOF
|
||||||
|
cat confdefs.h >>conftest.$ac_ext
|
||||||
|
cat >>conftest.$ac_ext <<_ACEOF
|
||||||
|
/* end confdefs.h. */
|
||||||
|
|
||||||
|
|
||||||
|
#include <linux/fs.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
main (void)
|
||||||
|
{
|
||||||
|
|
||||||
|
long (*fallocate) (struct inode *, int, loff_t, loff_t) = NULL;
|
||||||
|
struct inode_operations fops __attribute__ ((unused)) = {
|
||||||
|
.fallocate = fallocate,
|
||||||
|
};
|
||||||
|
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
|
|
||||||
|
rm -Rf build && mkdir -p build
|
||||||
|
echo "obj-m := conftest.o" >build/Makefile
|
||||||
|
if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build'
|
||||||
|
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||||
|
(eval $ac_try) 2>&5
|
||||||
|
ac_status=$?
|
||||||
|
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||||
|
(exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
|
||||||
|
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||||
|
(eval $ac_try) 2>&5
|
||||||
|
ac_status=$?
|
||||||
|
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||||
|
(exit $ac_status); }; }; then
|
||||||
|
|
||||||
|
{ $as_echo "$as_me:$LINENO: result: yes" >&5
|
||||||
|
$as_echo "yes" >&6; }
|
||||||
|
|
||||||
|
cat >>confdefs.h <<\_ACEOF
|
||||||
|
#define HAVE_INODE_FALLOCATE 1
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
|
|
||||||
|
else
|
||||||
|
$as_echo "$as_me: failed program was:" >&5
|
||||||
|
sed 's/^/| /' conftest.$ac_ext >&5
|
||||||
|
|
||||||
|
{ $as_echo "$as_me:$LINENO: result: no" >&5
|
||||||
|
$as_echo "no" >&6; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -Rf build
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{ $as_echo "$as_me:$LINENO: checking whether symbol insert_inode_locked is exported" >&5
|
{ $as_echo "$as_me:$LINENO: checking whether symbol insert_inode_locked is exported" >&5
|
||||||
$as_echo_n "checking whether symbol insert_inode_locked is exported... " >&6; }
|
$as_echo_n "checking whether symbol insert_inode_locked is exported... " >&6; }
|
||||||
grep -q -E '[[:space:]]insert_inode_locked[[:space:]]' \
|
grep -q -E '[[:space:]]insert_inode_locked[[:space:]]' \
|
||||||
|
|
|
@ -64,6 +64,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -63,6 +63,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -63,6 +63,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -64,6 +64,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -64,6 +64,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -65,6 +65,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -65,6 +65,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -65,6 +65,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -65,6 +65,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -65,6 +65,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -65,6 +65,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
#include <linux/xattr_compat.h>
|
#include <linux/xattr_compat.h>
|
||||||
#include <linux/exportfs.h>
|
#include <linux/exportfs.h>
|
||||||
#include <linux/writeback.h>
|
#include <linux/writeback.h>
|
||||||
|
#include <linux/falloc.h>
|
||||||
|
|
||||||
/* zpl_inode.c */
|
/* zpl_inode.c */
|
||||||
extern const struct inode_operations zpl_inode_operations;
|
extern const struct inode_operations zpl_inode_operations;
|
||||||
|
@ -42,6 +43,8 @@ extern ssize_t zpl_read_common(struct inode *ip, const char *buf,
|
||||||
size_t len, loff_t pos, uio_seg_t segment, int flags, cred_t *cr);
|
size_t len, loff_t pos, uio_seg_t segment, int flags, cred_t *cr);
|
||||||
extern ssize_t zpl_write_common(struct inode *ip, const char *buf,
|
extern ssize_t zpl_write_common(struct inode *ip, const char *buf,
|
||||||
size_t len, loff_t pos, uio_seg_t segment, int flags, cred_t *cr);
|
size_t len, loff_t pos, uio_seg_t segment, int flags, cred_t *cr);
|
||||||
|
extern long zpl_fallocate_common(struct inode *ip, int mode,
|
||||||
|
loff_t offset, loff_t len);
|
||||||
|
|
||||||
extern const struct address_space_operations zpl_address_space_operations;
|
extern const struct address_space_operations zpl_address_space_operations;
|
||||||
extern const struct file_operations zpl_file_operations;
|
extern const struct file_operations zpl_file_operations;
|
||||||
|
|
|
@ -63,6 +63,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -65,6 +65,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -65,6 +65,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -65,6 +65,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -65,6 +65,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -65,6 +65,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -64,6 +64,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -65,6 +65,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -65,6 +65,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -65,6 +65,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -63,6 +63,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -65,6 +65,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -65,6 +65,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -65,6 +65,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -65,6 +65,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -65,6 +65,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -65,6 +65,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -65,6 +65,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -65,6 +65,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -65,6 +65,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -65,6 +65,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -63,6 +63,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -63,6 +63,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -394,6 +394,50 @@ zpl_writepage(struct page *pp, struct writeback_control *wbc)
|
||||||
return zpl_putpage(pp, wbc, pp->mapping);
|
return zpl_putpage(pp, wbc, pp->mapping);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The only flag combination which matches the behavior of zfs_space()
|
||||||
|
* is FALLOC_FL_PUNCH_HOLE. This flag was introduced in the 2.6.38 kernel.
|
||||||
|
*/
|
||||||
|
long
|
||||||
|
zpl_fallocate_common(struct inode *ip, int mode, loff_t offset, loff_t len)
|
||||||
|
{
|
||||||
|
cred_t *cr = CRED();
|
||||||
|
int error = -EOPNOTSUPP;
|
||||||
|
|
||||||
|
if (mode & FALLOC_FL_KEEP_SIZE)
|
||||||
|
return (-EOPNOTSUPP);
|
||||||
|
|
||||||
|
crhold(cr);
|
||||||
|
|
||||||
|
#ifdef FALLOC_FL_PUNCH_HOLE
|
||||||
|
if (mode & FALLOC_FL_PUNCH_HOLE) {
|
||||||
|
flock64_t bf;
|
||||||
|
|
||||||
|
bf.l_type = F_WRLCK;
|
||||||
|
bf.l_whence = 0;
|
||||||
|
bf.l_start = offset;
|
||||||
|
bf.l_len = len;
|
||||||
|
bf.l_pid = 0;
|
||||||
|
|
||||||
|
error = -zfs_space(ip, F_FREESP, &bf, FWRITE, offset, cr);
|
||||||
|
}
|
||||||
|
#endif /* FALLOC_FL_PUNCH_HOLE */
|
||||||
|
|
||||||
|
crfree(cr);
|
||||||
|
|
||||||
|
ASSERT3S(error, <=, 0);
|
||||||
|
return (error);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_FILE_FALLOCATE
|
||||||
|
static long
|
||||||
|
zpl_fallocate(struct file *filp, int mode, loff_t offset, loff_t len)
|
||||||
|
{
|
||||||
|
return zpl_fallocate_common(filp->f_path.dentry->d_inode,
|
||||||
|
mode, offset, len);
|
||||||
|
}
|
||||||
|
#endif /* HAVE_FILE_FALLOCATE */
|
||||||
|
|
||||||
const struct address_space_operations zpl_address_space_operations = {
|
const struct address_space_operations zpl_address_space_operations = {
|
||||||
.readpages = zpl_readpages,
|
.readpages = zpl_readpages,
|
||||||
.readpage = zpl_readpage,
|
.readpage = zpl_readpage,
|
||||||
|
@ -410,6 +454,9 @@ const struct file_operations zpl_file_operations = {
|
||||||
.readdir = zpl_readdir,
|
.readdir = zpl_readdir,
|
||||||
.mmap = zpl_mmap,
|
.mmap = zpl_mmap,
|
||||||
.fsync = zpl_fsync,
|
.fsync = zpl_fsync,
|
||||||
|
#ifdef HAVE_FILE_FALLOCATE
|
||||||
|
.fallocate = zpl_fallocate,
|
||||||
|
#endif /* HAVE_FILE_FALLOCATE */
|
||||||
};
|
};
|
||||||
|
|
||||||
const struct file_operations zpl_dir_file_operations = {
|
const struct file_operations zpl_dir_file_operations = {
|
||||||
|
|
|
@ -342,6 +342,15 @@ zpl_truncate_range(struct inode* ip, loff_t start, loff_t end)
|
||||||
crfree(cr);
|
crfree(cr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_INODE_FALLOCATE
|
||||||
|
static long
|
||||||
|
zpl_fallocate(struct inode *ip, int mode, loff_t offset, loff_t len)
|
||||||
|
{
|
||||||
|
return zpl_fallocate_common(ip, mode, offset, len);
|
||||||
|
}
|
||||||
|
#endif /* HAVE_INODE_FALLOCATE */
|
||||||
|
|
||||||
|
|
||||||
const struct inode_operations zpl_inode_operations = {
|
const struct inode_operations zpl_inode_operations = {
|
||||||
.create = zpl_create,
|
.create = zpl_create,
|
||||||
.link = zpl_link,
|
.link = zpl_link,
|
||||||
|
@ -358,6 +367,9 @@ const struct inode_operations zpl_inode_operations = {
|
||||||
.removexattr = generic_removexattr,
|
.removexattr = generic_removexattr,
|
||||||
.listxattr = zpl_xattr_list,
|
.listxattr = zpl_xattr_list,
|
||||||
.truncate_range = zpl_truncate_range,
|
.truncate_range = zpl_truncate_range,
|
||||||
|
#ifdef HAVE_INODE_FALLOCATE
|
||||||
|
.fallocate = zpl_fallocate,
|
||||||
|
#endif /* HAVE_INODE_FALLOCATE */
|
||||||
};
|
};
|
||||||
|
|
||||||
const struct inode_operations zpl_dir_inode_operations = {
|
const struct inode_operations zpl_dir_inode_operations = {
|
||||||
|
|
|
@ -64,6 +64,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -64,6 +64,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -64,6 +64,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -64,6 +64,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -64,6 +64,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -63,6 +63,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -64,6 +64,7 @@ am__aclocal_m4_deps = \
|
||||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||||
|
$(top_srcdir)/config/kernel-fallocate.m4 \
|
||||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||||
|
|
|
@ -111,6 +111,9 @@
|
||||||
/* sops->evict_inode() exists */
|
/* sops->evict_inode() exists */
|
||||||
#undef HAVE_EVICT_INODE
|
#undef HAVE_EVICT_INODE
|
||||||
|
|
||||||
|
/* fops->fallocate() exists */
|
||||||
|
#undef HAVE_FILE_FALLOCATE
|
||||||
|
|
||||||
/* kernel defines fmode_t */
|
/* kernel defines fmode_t */
|
||||||
#undef HAVE_FMODE_T
|
#undef HAVE_FMODE_T
|
||||||
|
|
||||||
|
@ -132,6 +135,9 @@
|
||||||
/* Define to 1 if licensed under the GPL */
|
/* Define to 1 if licensed under the GPL */
|
||||||
#undef HAVE_GPL_ONLY_SYMBOLS
|
#undef HAVE_GPL_ONLY_SYMBOLS
|
||||||
|
|
||||||
|
/* fops->fallocate() exists */
|
||||||
|
#undef HAVE_INODE_FALLOCATE
|
||||||
|
|
||||||
/* insert_inode_locked() is available */
|
/* insert_inode_locked() is available */
|
||||||
#undef HAVE_INSERT_INODE_LOCKED
|
#undef HAVE_INSERT_INODE_LOCKED
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue