| /* |
| * (C) 2001 Clemson University and The University of Chicago |
| * |
| * See COPYING in top-level directory. |
| */ |
| |
| /* This file just defines debugging masks to be used with the gossip |
| * logging utility. All debugging masks for ORANGEFS are kept here to make |
| * sure we don't have collisions. |
| */ |
| |
| #ifndef __ORANGEFS_DEBUG_H |
| #define __ORANGEFS_DEBUG_H |
| |
| #ifdef __KERNEL__ |
| #include <linux/types.h> |
| #else |
| #include <stdint.h> |
| #endif |
| |
| #define GOSSIP_NO_DEBUG (__u64)0 |
| #define GOSSIP_BMI_DEBUG_TCP ((__u64)1 << 0) |
| #define GOSSIP_BMI_DEBUG_CONTROL ((__u64)1 << 1) |
| #define GOSSIP_BMI_DEBUG_OFFSETS ((__u64)1 << 2) |
| #define GOSSIP_BMI_DEBUG_GM ((__u64)1 << 3) |
| #define GOSSIP_JOB_DEBUG ((__u64)1 << 4) |
| #define GOSSIP_SERVER_DEBUG ((__u64)1 << 5) |
| #define GOSSIP_STO_DEBUG_CTRL ((__u64)1 << 6) |
| #define GOSSIP_STO_DEBUG_DEFAULT ((__u64)1 << 7) |
| #define GOSSIP_FLOW_DEBUG ((__u64)1 << 8) |
| #define GOSSIP_BMI_DEBUG_GM_MEM ((__u64)1 << 9) |
| #define GOSSIP_REQUEST_DEBUG ((__u64)1 << 10) |
| #define GOSSIP_FLOW_PROTO_DEBUG ((__u64)1 << 11) |
| #define GOSSIP_NCACHE_DEBUG ((__u64)1 << 12) |
| #define GOSSIP_CLIENT_DEBUG ((__u64)1 << 13) |
| #define GOSSIP_REQ_SCHED_DEBUG ((__u64)1 << 14) |
| #define GOSSIP_ACACHE_DEBUG ((__u64)1 << 15) |
| #define GOSSIP_TROVE_DEBUG ((__u64)1 << 16) |
| #define GOSSIP_TROVE_OP_DEBUG ((__u64)1 << 17) |
| #define GOSSIP_DIST_DEBUG ((__u64)1 << 18) |
| #define GOSSIP_BMI_DEBUG_IB ((__u64)1 << 19) |
| #define GOSSIP_DBPF_ATTRCACHE_DEBUG ((__u64)1 << 20) |
| #define GOSSIP_MMAP_RCACHE_DEBUG ((__u64)1 << 21) |
| #define GOSSIP_LOOKUP_DEBUG ((__u64)1 << 22) |
| #define GOSSIP_REMOVE_DEBUG ((__u64)1 << 23) |
| #define GOSSIP_GETATTR_DEBUG ((__u64)1 << 24) |
| #define GOSSIP_READDIR_DEBUG ((__u64)1 << 25) |
| #define GOSSIP_IO_DEBUG ((__u64)1 << 26) |
| #define GOSSIP_DBPF_OPEN_CACHE_DEBUG ((__u64)1 << 27) |
| #define GOSSIP_PERMISSIONS_DEBUG ((__u64)1 << 28) |
| #define GOSSIP_CANCEL_DEBUG ((__u64)1 << 29) |
| #define GOSSIP_MSGPAIR_DEBUG ((__u64)1 << 30) |
| #define GOSSIP_CLIENTCORE_DEBUG ((__u64)1 << 31) |
| #define GOSSIP_CLIENTCORE_TIMING_DEBUG ((__u64)1 << 32) |
| #define GOSSIP_SETATTR_DEBUG ((__u64)1 << 33) |
| #define GOSSIP_MKDIR_DEBUG ((__u64)1 << 34) |
| #define GOSSIP_VARSTRIP_DEBUG ((__u64)1 << 35) |
| #define GOSSIP_GETEATTR_DEBUG ((__u64)1 << 36) |
| #define GOSSIP_SETEATTR_DEBUG ((__u64)1 << 37) |
| #define GOSSIP_ENDECODE_DEBUG ((__u64)1 << 38) |
| #define GOSSIP_DELEATTR_DEBUG ((__u64)1 << 39) |
| #define GOSSIP_ACCESS_DEBUG ((__u64)1 << 40) |
| #define GOSSIP_ACCESS_DETAIL_DEBUG ((__u64)1 << 41) |
| #define GOSSIP_LISTEATTR_DEBUG ((__u64)1 << 42) |
| #define GOSSIP_PERFCOUNTER_DEBUG ((__u64)1 << 43) |
| #define GOSSIP_STATE_MACHINE_DEBUG ((__u64)1 << 44) |
| #define GOSSIP_DBPF_KEYVAL_DEBUG ((__u64)1 << 45) |
| #define GOSSIP_LISTATTR_DEBUG ((__u64)1 << 46) |
| #define GOSSIP_DBPF_COALESCE_DEBUG ((__u64)1 << 47) |
| #define GOSSIP_ACCESS_HOSTNAMES ((__u64)1 << 48) |
| #define GOSSIP_FSCK_DEBUG ((__u64)1 << 49) |
| #define GOSSIP_BMI_DEBUG_MX ((__u64)1 << 50) |
| #define GOSSIP_BSTREAM_DEBUG ((__u64)1 << 51) |
| #define GOSSIP_BMI_DEBUG_PORTALS ((__u64)1 << 52) |
| #define GOSSIP_USER_DEV_DEBUG ((__u64)1 << 53) |
| #define GOSSIP_DIRECTIO_DEBUG ((__u64)1 << 54) |
| #define GOSSIP_MGMT_DEBUG ((__u64)1 << 55) |
| #define GOSSIP_MIRROR_DEBUG ((__u64)1 << 56) |
| #define GOSSIP_WIN_CLIENT_DEBUG ((__u64)1 << 57) |
| #define GOSSIP_SECURITY_DEBUG ((__u64)1 << 58) |
| #define GOSSIP_USRINT_DEBUG ((__u64)1 << 59) |
| #define GOSSIP_RCACHE_DEBUG ((__u64)1 << 60) |
| #define GOSSIP_SECCACHE_DEBUG ((__u64)1 << 61) |
| |
| #define GOSSIP_BMI_DEBUG_ALL ((__u64) (GOSSIP_BMI_DEBUG_TCP + \ |
| GOSSIP_BMI_DEBUG_CONTROL + \ |
| GOSSIP_BMI_DEBUG_GM + \ |
| GOSSIP_BMI_DEBUG_OFFSETS + \ |
| GOSSIP_BMI_DEBUG_IB + \ |
| GOSSIP_BMI_DEBUG_MX + \ |
| GOSSIP_BMI_DEBUG_PORTALS)) |
| |
| const char *ORANGEFS_debug_get_next_debug_keyword(int position); |
| |
| #define GOSSIP_SUPER_DEBUG ((__u64)1 << 0) |
| #define GOSSIP_INODE_DEBUG ((__u64)1 << 1) |
| #define GOSSIP_FILE_DEBUG ((__u64)1 << 2) |
| #define GOSSIP_DIR_DEBUG ((__u64)1 << 3) |
| #define GOSSIP_UTILS_DEBUG ((__u64)1 << 4) |
| #define GOSSIP_WAIT_DEBUG ((__u64)1 << 5) |
| #define GOSSIP_ACL_DEBUG ((__u64)1 << 6) |
| #define GOSSIP_DCACHE_DEBUG ((__u64)1 << 7) |
| #define GOSSIP_DEV_DEBUG ((__u64)1 << 8) |
| #define GOSSIP_NAME_DEBUG ((__u64)1 << 9) |
| #define GOSSIP_BUFMAP_DEBUG ((__u64)1 << 10) |
| #define GOSSIP_CACHE_DEBUG ((__u64)1 << 11) |
| #define GOSSIP_DEBUGFS_DEBUG ((__u64)1 << 12) |
| #define GOSSIP_XATTR_DEBUG ((__u64)1 << 13) |
| #define GOSSIP_INIT_DEBUG ((__u64)1 << 14) |
| #define GOSSIP_SYSFS_DEBUG ((__u64)1 << 15) |
| |
| #define GOSSIP_MAX_NR 16 |
| #define GOSSIP_MAX_DEBUG (((__u64)1 << GOSSIP_MAX_NR) - 1) |
| |
| /*function prototypes*/ |
| __u64 ORANGEFS_kmod_eventlog_to_mask(const char *event_logging); |
| __u64 ORANGEFS_debug_eventlog_to_mask(const char *event_logging); |
| char *ORANGEFS_debug_mask_to_eventlog(__u64 mask); |
| char *ORANGEFS_kmod_mask_to_eventlog(__u64 mask); |
| |
| /* a private internal type */ |
| struct __keyword_mask_s { |
| const char *keyword; |
| __u64 mask_val; |
| }; |
| |
| #define __DEBUG_ALL ((__u64) -1) |
| |
| /* map all config keywords to pvfs2 debug masks here */ |
| static struct __keyword_mask_s s_keyword_mask_map[] = { |
| /* Log trove debugging info. Same as 'trove'. */ |
| {"storage", GOSSIP_TROVE_DEBUG}, |
| /* Log trove debugging info. Same as 'storage'. */ |
| {"trove", GOSSIP_TROVE_DEBUG}, |
| /* Log trove operations. */ |
| {"trove_op", GOSSIP_TROVE_OP_DEBUG}, |
| /* Log network debug info. */ |
| {"network", GOSSIP_BMI_DEBUG_ALL}, |
| /* Log server info, including new operations. */ |
| {"server", GOSSIP_SERVER_DEBUG}, |
| /* Log client sysint info. This is only useful for the client. */ |
| {"client", GOSSIP_CLIENT_DEBUG}, |
| /* Debug the varstrip distribution */ |
| {"varstrip", GOSSIP_VARSTRIP_DEBUG}, |
| /* Log job info */ |
| {"job", GOSSIP_JOB_DEBUG}, |
| /* Debug PINT_process_request calls. EXTREMELY verbose! */ |
| {"request", GOSSIP_REQUEST_DEBUG}, |
| /* Log request scheduler events */ |
| {"reqsched", GOSSIP_REQ_SCHED_DEBUG}, |
| /* Log the flow protocol events, including flowproto_multiqueue */ |
| {"flowproto", GOSSIP_FLOW_PROTO_DEBUG}, |
| /* Log flow calls */ |
| {"flow", GOSSIP_FLOW_DEBUG}, |
| /* Debug the client name cache. Only useful on the client. */ |
| {"ncache", GOSSIP_NCACHE_DEBUG}, |
| /* Debug read-ahead cache events. Only useful on the client. */ |
| {"mmaprcache", GOSSIP_MMAP_RCACHE_DEBUG}, |
| /* Debug the attribute cache. Only useful on the client. */ |
| {"acache", GOSSIP_ACACHE_DEBUG}, |
| /* Log/Debug distribution calls */ |
| {"distribution", GOSSIP_DIST_DEBUG}, |
| /* Debug the server-side dbpf attribute cache */ |
| {"dbpfattrcache", GOSSIP_DBPF_ATTRCACHE_DEBUG}, |
| /* Debug the client lookup state machine. */ |
| {"lookup", GOSSIP_LOOKUP_DEBUG}, |
| /* Debug the client remove state macine. */ |
| {"remove", GOSSIP_REMOVE_DEBUG}, |
| /* Debug the server getattr state machine. */ |
| {"getattr", GOSSIP_GETATTR_DEBUG}, |
| /* Debug the server setattr state machine. */ |
| {"setattr", GOSSIP_SETATTR_DEBUG}, |
| /* vectored getattr server state machine */ |
| {"listattr", GOSSIP_LISTATTR_DEBUG}, |
| /* Debug the client and server get ext attributes SM. */ |
| {"geteattr", GOSSIP_GETEATTR_DEBUG}, |
| /* Debug the client and server set ext attributes SM. */ |
| {"seteattr", GOSSIP_SETEATTR_DEBUG}, |
| /* Debug the readdir operation (client and server) */ |
| {"readdir", GOSSIP_READDIR_DEBUG}, |
| /* Debug the mkdir operation (server only) */ |
| {"mkdir", GOSSIP_MKDIR_DEBUG}, |
| /* |
| * Debug the io operation (reads and writes) |
| * for both the client and server. |
| */ |
| {"io", GOSSIP_IO_DEBUG}, |
| /* Debug the server's open file descriptor cache */ |
| {"open_cache", GOSSIP_DBPF_OPEN_CACHE_DEBUG}, |
| /* Debug permissions checking on the server */ |
| {"permissions", GOSSIP_PERMISSIONS_DEBUG}, |
| /* Debug the cancel operation */ |
| {"cancel", GOSSIP_CANCEL_DEBUG}, |
| /* Debug the msgpair state machine */ |
| {"msgpair", GOSSIP_MSGPAIR_DEBUG}, |
| /* Debug the client core app */ |
| {"clientcore", GOSSIP_CLIENTCORE_DEBUG}, |
| /* Debug the client timing state machines (job timeout, etc.) */ |
| {"clientcore_timing", GOSSIP_CLIENTCORE_TIMING_DEBUG}, |
| /* network encoding */ |
| {"endecode", GOSSIP_ENDECODE_DEBUG}, |
| /* Show server file (metadata) accesses (both modify and read-only). */ |
| {"access", GOSSIP_ACCESS_DEBUG}, |
| /* Show more detailed server file accesses */ |
| {"access_detail", GOSSIP_ACCESS_DETAIL_DEBUG}, |
| /* Debug the listeattr operation */ |
| {"listeattr", GOSSIP_LISTEATTR_DEBUG}, |
| /* Debug the state machine management code */ |
| {"sm", GOSSIP_STATE_MACHINE_DEBUG}, |
| /* Debug the metadata dbpf keyval functions */ |
| {"keyval", GOSSIP_DBPF_KEYVAL_DEBUG}, |
| /* Debug the metadata sync coalescing code */ |
| {"coalesce", GOSSIP_DBPF_COALESCE_DEBUG}, |
| /* Display the hostnames instead of IP addrs in debug output */ |
| {"access_hostnames", GOSSIP_ACCESS_HOSTNAMES}, |
| /* Show the client device events */ |
| {"user_dev", GOSSIP_USER_DEV_DEBUG}, |
| /* Debug the fsck tool */ |
| {"fsck", GOSSIP_FSCK_DEBUG}, |
| /* Debug the bstream code */ |
| {"bstream", GOSSIP_BSTREAM_DEBUG}, |
| /* Debug trove in direct io mode */ |
| {"directio", GOSSIP_DIRECTIO_DEBUG}, |
| /* Debug direct io thread management */ |
| {"mgmt", GOSSIP_MGMT_DEBUG}, |
| /* Debug mirroring process */ |
| {"mirror", GOSSIP_MIRROR_DEBUG}, |
| /* Windows client */ |
| {"win_client", GOSSIP_WIN_CLIENT_DEBUG}, |
| /* Debug robust security code */ |
| {"security", GOSSIP_SECURITY_DEBUG}, |
| /* Capability Cache */ |
| {"seccache", GOSSIP_SECCACHE_DEBUG}, |
| /* Client User Interface */ |
| {"usrint", GOSSIP_USRINT_DEBUG}, |
| /* rcache */ |
| {"rcache", GOSSIP_RCACHE_DEBUG}, |
| /* Everything except the periodic events. Useful for debugging */ |
| {"verbose", |
| (__DEBUG_ALL & |
| ~(GOSSIP_PERFCOUNTER_DEBUG | GOSSIP_STATE_MACHINE_DEBUG | |
| GOSSIP_ENDECODE_DEBUG | GOSSIP_USER_DEV_DEBUG)) |
| }, |
| /* No debug output */ |
| {"none", GOSSIP_NO_DEBUG}, |
| /* Everything */ |
| {"all", __DEBUG_ALL} |
| }; |
| |
| #undef __DEBUG_ALL |
| |
| /* |
| * Map all kmod keywords to kmod debug masks here. Keep this |
| * structure "packed": |
| * |
| * "all" is always last... |
| * |
| * keyword mask_val index |
| * foo 1 0 |
| * bar 2 1 |
| * baz 4 2 |
| * qux 8 3 |
| * . . . |
| */ |
| static struct __keyword_mask_s s_kmod_keyword_mask_map[] = { |
| {"super", GOSSIP_SUPER_DEBUG}, |
| {"inode", GOSSIP_INODE_DEBUG}, |
| {"file", GOSSIP_FILE_DEBUG}, |
| {"dir", GOSSIP_DIR_DEBUG}, |
| {"utils", GOSSIP_UTILS_DEBUG}, |
| {"wait", GOSSIP_WAIT_DEBUG}, |
| {"acl", GOSSIP_ACL_DEBUG}, |
| {"dcache", GOSSIP_DCACHE_DEBUG}, |
| {"dev", GOSSIP_DEV_DEBUG}, |
| {"name", GOSSIP_NAME_DEBUG}, |
| {"bufmap", GOSSIP_BUFMAP_DEBUG}, |
| {"cache", GOSSIP_CACHE_DEBUG}, |
| {"debugfs", GOSSIP_DEBUGFS_DEBUG}, |
| {"xattr", GOSSIP_XATTR_DEBUG}, |
| {"init", GOSSIP_INIT_DEBUG}, |
| {"sysfs", GOSSIP_SYSFS_DEBUG}, |
| {"none", GOSSIP_NO_DEBUG}, |
| {"all", GOSSIP_MAX_DEBUG} |
| }; |
| |
| static const int num_kmod_keyword_mask_map = (int) |
| (sizeof(s_kmod_keyword_mask_map) / sizeof(struct __keyword_mask_s)); |
| |
| static const int num_keyword_mask_map = (int) |
| (sizeof(s_keyword_mask_map) / sizeof(struct __keyword_mask_s)); |
| |
| #endif /* __ORANGEFS_DEBUG_H */ |