From 18f57327e0c2c669034e1fff1260877fd70c3038 Mon Sep 17 00:00:00 2001 From: Brian Behlendorf Date: Thu, 8 Feb 2018 14:27:59 -0800 Subject: Linux 4.16 compat: inode_set_iversion() A new interface was added to manipulate the version field of an inode. Add a inode_set_iversion() wrapper for older kernels and use the new interface when available. The i_version field was dropped from the trace point due to the switch to an atomic64_t i_version type. Reviewed-by: Olaf Faaland Reviewed-by: Giuseppe Di Natale Reviewed-by: Chunwei Chen Signed-off-by: Brian Behlendorf Closes #7148 --- include/linux/vfs_compat.h | 14 ++++++++++++++ include/sys/trace_acl.h | 6 ++---- 2 files changed, 16 insertions(+), 4 deletions(-) (limited to 'include') diff --git a/include/linux/vfs_compat.h b/include/linux/vfs_compat.h index 6111f0afc..f51ff887d 100644 --- a/include/linux/vfs_compat.h +++ b/include/linux/vfs_compat.h @@ -578,4 +578,18 @@ current_time(struct inode *ip) } #endif +/* + * 4.16 API change + * Added iversion interface for managing inode version field. + */ +#ifdef HAVE_INODE_SET_IVERSION +#include +#else +static inline void +inode_set_iversion(struct inode *ip, u64 val) +{ + ip->i_version = val; +} +#endif + #endif /* _ZFS_VFS_H */ diff --git a/include/sys/trace_acl.h b/include/sys/trace_acl.h index 1057e560b..610bbe29c 100644 --- a/include/sys/trace_acl.h +++ b/include/sys/trace_acl.h @@ -68,7 +68,6 @@ DECLARE_EVENT_CLASS(zfs_ace_class, __field(uint32_t, i_gid) __field(unsigned long, i_ino) __field(unsigned int, i_nlink) - __field(u64, i_version) __field(loff_t, i_size) __field(unsigned int, i_blkbits) __field(unsigned short, i_bytes) @@ -103,7 +102,6 @@ DECLARE_EVENT_CLASS(zfs_ace_class, __entry->i_gid = KGID_TO_SGID(ZTOI(zn)->i_gid); __entry->i_ino = zn->z_inode.i_ino; __entry->i_nlink = zn->z_inode.i_nlink; - __entry->i_version = zn->z_inode.i_version; __entry->i_size = zn->z_inode.i_size; __entry->i_blkbits = zn->z_inode.i_blkbits; __entry->i_bytes = zn->z_inode.i_bytes; @@ -121,7 +119,7 @@ DECLARE_EVENT_CLASS(zfs_ace_class, "mapcnt %llu size %llu pflags %llu " "sync_cnt %u mode 0x%x is_sa %d " "is_mapped %d is_ctldir %d is_stale %d inode { " - "uid %u gid %u ino %lu nlink %u version %llu size %lli " + "uid %u gid %u ino %lu nlink %u size %lli " "blkbits %u bytes %u mode 0x%x generation %x } } " "ace { type %u flags %u access_mask %u } mask_matched %u", __entry->z_id, __entry->z_unlinked, __entry->z_atime_dirty, @@ -131,7 +129,7 @@ DECLARE_EVENT_CLASS(zfs_ace_class, __entry->z_is_sa, __entry->z_is_mapped, __entry->z_is_ctldir, __entry->z_is_stale, __entry->i_uid, __entry->i_gid, __entry->i_ino, __entry->i_nlink, - __entry->i_version, __entry->i_size, __entry->i_blkbits, + __entry->i_size, __entry->i_blkbits, __entry->i_bytes, __entry->i_mode, __entry->i_generation, __entry->z_type, __entry->z_flags, __entry->z_access_mask, __entry->mask_matched) -- cgit v1.2.3