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