-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Linux 4.11 compat: iops.getattr and friends
In torvalds/linux@a528d35, there are changes to the getattr family of functions, struct kstat, and the interface of inode_operations .getattr. The inode_operations .getattr and simple_getattr() interface changed to: int (*getattr) (const struct path *, struct dentry *, struct kstat *, u32 request_mask, unsigned int query_flags) The request_mask argument indicates which field(s) the caller intends to use. Fields the caller has not specified via request_mask may be set in the returned struct anyway, but their values may be approximate. The query_flags argument indicates whether the filesystem must update the attributes from the backing store. Currently both fields are ignored. It is possible that getattr-related functions within zfs could be optimized based on the request_mask. struct kstat includes new fields: u32 result_mask; /* What fields the user got */ u64 attributes; /* See STATX_ATTR_* flags */ struct timespec btime; /* File creation time */ Fields attribute and btime are cleared; the result_mask reflects this. These appear to be optional based on simple_getattr() and vfs_getattr() within the kernel, which take the same approach. Requires-spl: refs/pull/608/head Signed-off-by: Olaf Faaland <faaland1@llnl.gov>
- Loading branch information
Showing
5 changed files
with
138 additions
and
19 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
dnl # | ||
dnl # Linux 4.11 API | ||
dnl # See torvalds/linux@a528d35 | ||
dnl # | ||
AC_DEFUN([ZFS_AC_PATH_KERNEL_IOPS_GETATTR], [ | ||
AC_MSG_CHECKING([whether iops->getattr() takes a path]) | ||
ZFS_LINUX_TRY_COMPILE([ | ||
#include <linux/fs.h> | ||
int test_getattr( | ||
const struct path *p, struct kstat *k, | ||
u32 request_mask, unsigned int query_flags) | ||
{ return 0; } | ||
static const struct inode_operations | ||
iops __attribute__ ((unused)) = { | ||
.getattr = test_getattr, | ||
}; | ||
],[ | ||
],[ | ||
AC_MSG_RESULT(yes) | ||
AC_DEFINE(HAVE_PATH_IOPS_GETATTR, 1, | ||
[iops->getattr() takes a path]) | ||
],[ | ||
AC_MSG_RESULT(no) | ||
]) | ||
]) | ||
|
||
|
||
|
||
dnl # | ||
dnl # Linux 3.9 - 4.10 API | ||
dnl # | ||
AC_DEFUN([ZFS_AC_VFSMOUNT_KERNEL_IOPS_GETATTR], [ | ||
AC_MSG_CHECKING([whether iops->getattr() takes a vfsmount]) | ||
ZFS_LINUX_TRY_COMPILE([ | ||
#include <linux/fs.h> | ||
int test_getattr( | ||
struct vfsmount *mnt, struct dentry *d, | ||
struct kstat *k) | ||
{ return 0; } | ||
static const struct inode_operations | ||
iops __attribute__ ((unused)) = { | ||
.getattr = test_getattr, | ||
}; | ||
],[ | ||
],[ | ||
AC_MSG_RESULT(yes) | ||
AC_DEFINE(HAVE_VFSMOUNT_IOPS_GETATTR, 1, | ||
[iops->getattr() takes a vfsmount]) | ||
],[ | ||
AC_MSG_RESULT(no) | ||
]) | ||
]) | ||
|
||
|
||
dnl # | ||
dnl # The interface of the getattr callback from the inode_operations | ||
dnl # structure changed. Also, the interface of the simple_getattr() | ||
dnl # function provided by the kernel changed. | ||
dnl # | ||
AC_DEFUN([ZFS_AC_KERNEL_INODE_OPERATIONS_GETATTR], [ | ||
ZFS_AC_PATH_KERNEL_IOPS_GETATTR | ||
ZFS_AC_VFSMOUNT_KERNEL_IOPS_GETATTR | ||
]) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters