xref: /titanic_51/usr/src/common/zev/zev.h (revision 231caef24406106540286485f630f823f4efe5c9)
1 #ifndef __ZEV_H__
2 #define __ZEV_H__
3 
4 #include <sys/types.h>
5 
6 #ifdef _KERNEL
7 #include <sys/dmu_objset.h>
8 #include <sys/dsl_dataset.h>
9 #include <sys/zfs_vfsops.h>
10 #include <sys/dsl_dir.h>
11 #include <sys/spa_impl.h>
12 #endif
13 
14 #define ZEVIOC				  ('z' << 8)
15 #define ZEV_IOC_GET_STATISTICS		  (ZEVIOC | 1)	/* get zev statistics */
16 #define ZEV_IOC_MUTE_POOL		  (ZEVIOC | 2)	/* no events for pool */
17 #define ZEV_IOC_UNMUTE_POOL		  (ZEVIOC | 3)	/* send pool events */
18 #define ZEV_IOC_SET_MAX_QUEUE_LEN	  (ZEVIOC | 4)	/* when to block ops */
19 #define ZEV_IOC_SET_POLL_WAKEUP_QUEUE_LEN (ZEVIOC | 5)	/* poll throttle */
20 
21 #define ZEV_OP_MIN			 1
22 #define	ZEV_OP_ZFS_MOUNT		 1
23 #define	ZEV_OP_ZFS_UMOUNT		 2
24 #define	ZEV_OP_ZVOL_WRITE		 3
25 #define	ZEV_OP_ZVOL_TRUNCATE		 4
26 #define	ZEV_OP_ZNODE_CLOSE_AFTER_UPDATE	 5
27 #define	ZEV_OP_ZNODE_CREATE		 6
28 #define	ZEV_OP_ZNODE_REMOVE		 7
29 #define	ZEV_OP_ZNODE_LINK		 8
30 #define	ZEV_OP_ZNODE_SYMLINK		 9
31 #define	ZEV_OP_ZNODE_RENAME		10
32 #define	ZEV_OP_ZNODE_WRITE		11
33 #define	ZEV_OP_ZNODE_TRUNCATE		12
34 #define	ZEV_OP_ZNODE_SETATTR		13
35 #define	ZEV_OP_ZNODE_ACL		14
36 #define	ZEV_OP_MAX			14
37 
38 typedef struct zev_statistics_t {
39 	uint64_t	zev_queue_len;
40 	uint64_t	zev_bytes_read;
41 	/* runtime settings */
42 	uint64_t	zev_max_queue_len;
43 	uint64_t	zev_poll_wakeup_queue_len;
44 	/* counters */
45 	uint64_t	zev_cnt_total_events;
46 	uint64_t	zev_cnt_errors;
47 	/* zfsvfs ops */
48 	uint64_t	zev_cnt_zfs_mount;
49 	uint64_t	zev_cnt_zfs_umount;
50 	/* zvol ops */
51 	uint64_t	zev_cnt_zvol_write;
52 	uint64_t	zev_cnt_zvol_truncate;
53 	/* znode ops */
54 	uint64_t	zev_cnt_znode_close_after_update;
55 	uint64_t	zev_cnt_znode_create;
56 	uint64_t	zev_cnt_znode_remove;
57 	uint64_t	zev_cnt_znode_link;
58 	uint64_t	zev_cnt_znode_symlink;
59 	uint64_t	zev_cnt_znode_rename;
60 	uint64_t	zev_cnt_znode_write;
61 	uint64_t	zev_cnt_znode_truncate;
62 	uint64_t	zev_cnt_znode_setattr;
63 	uint64_t	zev_cnt_znode_acl;
64 } zev_statistics_t;
65 
66 typedef struct zev_ioctl_poolarg {
67 	uint64_t	zev_poolname_len;
68 	char		zev_poolname[MAXPATHLEN];
69 } zev_ioctl_poolarg_t;
70 
71 #ifdef _KERNEL
72 void zev_mq_printf(int op, int error, char *fmt, ...);
73 int zev_skip_pool(objset_t *os);
74 #endif
75 
76 #endif /* __ZEV_H__ */
77 
78