]>
git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/blob - zfs/include/sys/trace_acl.h
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
22 #if defined(_KERNEL) && defined(HAVE_DECLARE_EVENT_CLASS)
25 #define TRACE_SYSTEM zfs
27 #undef TRACE_SYSTEM_VAR
28 #define TRACE_SYSTEM_VAR zfs_acl
30 #if !defined(_TRACE_ACL_H) || defined(TRACE_HEADER_MULTI_READ)
33 #include <linux/tracepoint.h>
34 #include <sys/types.h>
37 * Generic support for three argument tracepoints of the form:
41 * zfs_ace_hdr_t *, ...,
45 DECLARE_EVENT_CLASS(zfs_ace_class
,
46 TP_PROTO(znode_t
*zn
, zfs_ace_hdr_t
*ace
, uint32_t mask_matched
),
47 TP_ARGS(zn
, ace
, mask_matched
),
49 __field(uint64_t, z_id
)
50 __field(uint8_t, z_unlinked
)
51 __field(uint8_t, z_atime_dirty
)
52 __field(uint8_t, z_zn_prefetch
)
53 __field(uint8_t, z_moved
)
54 __field(uint_t
, z_blksz
)
55 __field(uint_t
, z_seq
)
56 __field(uint64_t, z_mapcnt
)
57 __field(uint64_t, z_gen
)
58 __field(uint64_t, z_size
)
59 __array(uint64_t, z_atime
, 2)
60 __field(uint64_t, z_links
)
61 __field(uint64_t, z_pflags
)
62 __field(uint64_t, z_uid
)
63 __field(uint64_t, z_gid
)
64 __field(uint32_t, z_sync_cnt
)
65 __field(mode_t
, z_mode
)
66 __field(boolean_t
, z_is_sa
)
67 __field(boolean_t
, z_is_mapped
)
68 __field(boolean_t
, z_is_ctldir
)
69 __field(boolean_t
, z_is_stale
)
71 __field(unsigned long, i_ino
)
72 __field(unsigned int, i_nlink
)
73 __field(u64
, i_version
)
74 __field(loff_t
, i_size
)
75 __field(unsigned int, i_blkbits
)
76 __field(unsigned short, i_bytes
)
77 __field(umode_t
, i_mode
)
78 __field(__u32
, i_generation
)
80 __field(uint16_t, z_type
)
81 __field(uint16_t, z_flags
)
82 __field(uint32_t, z_access_mask
)
84 __field(uint32_t, mask_matched
)
87 __entry
->z_id
= zn
->z_id
;
88 __entry
->z_unlinked
= zn
->z_unlinked
;
89 __entry
->z_atime_dirty
= zn
->z_atime_dirty
;
90 __entry
->z_zn_prefetch
= zn
->z_zn_prefetch
;
91 __entry
->z_moved
= zn
->z_moved
;
92 __entry
->z_blksz
= zn
->z_blksz
;
93 __entry
->z_seq
= zn
->z_seq
;
94 __entry
->z_mapcnt
= zn
->z_mapcnt
;
95 __entry
->z_gen
= zn
->z_gen
;
96 __entry
->z_size
= zn
->z_size
;
97 __entry
->z_atime
[0] = zn
->z_atime
[0];
98 __entry
->z_atime
[1] = zn
->z_atime
[1];
99 __entry
->z_links
= zn
->z_links
;
100 __entry
->z_pflags
= zn
->z_pflags
;
101 __entry
->z_uid
= zn
->z_uid
;
102 __entry
->z_gid
= zn
->z_gid
;
103 __entry
->z_sync_cnt
= zn
->z_sync_cnt
;
104 __entry
->z_mode
= zn
->z_mode
;
105 __entry
->z_is_sa
= zn
->z_is_sa
;
106 __entry
->z_is_mapped
= zn
->z_is_mapped
;
107 __entry
->z_is_ctldir
= zn
->z_is_ctldir
;
108 __entry
->z_is_stale
= zn
->z_is_stale
;
110 __entry
->i_ino
= zn
->z_inode
.i_ino
;
111 __entry
->i_nlink
= zn
->z_inode
.i_nlink
;
112 __entry
->i_version
= zn
->z_inode
.i_version
;
113 __entry
->i_size
= zn
->z_inode
.i_size
;
114 __entry
->i_blkbits
= zn
->z_inode
.i_blkbits
;
115 __entry
->i_bytes
= zn
->z_inode
.i_bytes
;
116 __entry
->i_mode
= zn
->z_inode
.i_mode
;
117 __entry
->i_generation
= zn
->z_inode
.i_generation
;
119 __entry
->z_type
= ace
->z_type
;
120 __entry
->z_flags
= ace
->z_flags
;
121 __entry
->z_access_mask
= ace
->z_access_mask
;
123 __entry
->mask_matched
= mask_matched
;
125 TP_printk("zn { id %llu unlinked %u atime_dirty %u "
126 "zn_prefetch %u moved %u blksz %u seq %u "
127 "mapcnt %llu gen %llu size %llu atime 0x%llx:0x%llx "
128 "links %llu pflags %llu uid %llu gid %llu "
129 "sync_cnt %u mode 0x%x is_sa %d "
130 "is_mapped %d is_ctldir %d is_stale %d inode { "
131 "ino %lu nlink %u version %llu size %lli blkbits %u "
132 "bytes %u mode 0x%x generation %x } } ace { type %u "
133 "flags %u access_mask %u } mask_matched %u",
134 __entry
->z_id
, __entry
->z_unlinked
, __entry
->z_atime_dirty
,
135 __entry
->z_zn_prefetch
, __entry
->z_moved
, __entry
->z_blksz
,
136 __entry
->z_seq
, __entry
->z_mapcnt
, __entry
->z_gen
,
137 __entry
->z_size
, __entry
->z_atime
[0], __entry
->z_atime
[1],
138 __entry
->z_links
, __entry
->z_pflags
, __entry
->z_uid
,
139 __entry
->z_gid
, __entry
->z_sync_cnt
, __entry
->z_mode
,
140 __entry
->z_is_sa
, __entry
->z_is_mapped
,
141 __entry
->z_is_ctldir
, __entry
->z_is_stale
, __entry
->i_ino
,
142 __entry
->i_nlink
, __entry
->i_version
, __entry
->i_size
,
143 __entry
->i_blkbits
, __entry
->i_bytes
, __entry
->i_mode
,
144 __entry
->i_generation
, __entry
->z_type
, __entry
->z_flags
,
145 __entry
->z_access_mask
, __entry
->mask_matched
)
148 #define DEFINE_ACE_EVENT(name) \
149 DEFINE_EVENT(zfs_ace_class, name, \
150 TP_PROTO(znode_t *zn, zfs_ace_hdr_t *ace, uint32_t mask_matched), \
151 TP_ARGS(zn, ace, mask_matched))
152 DEFINE_ACE_EVENT(zfs_zfs__ace__denies
);
153 DEFINE_ACE_EVENT(zfs_zfs__ace__allows
);
155 #endif /* _TRACE_ACL_H */
157 #undef TRACE_INCLUDE_PATH
158 #undef TRACE_INCLUDE_FILE
159 #define TRACE_INCLUDE_PATH sys
160 #define TRACE_INCLUDE_FILE trace_acl
161 #include <trace/define_trace.h>
163 #endif /* _KERNEL && HAVE_DECLARE_EVENT_CLASS */