293 lines
11 KiB
C
293 lines
11 KiB
C
|
/*
|
||
|
* (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 */
|