diff options
Diffstat (limited to 'xlators/performance/io-threads/src/io-threads.h')
-rw-r--r-- | xlators/performance/io-threads/src/io-threads.h | 92 |
1 files changed, 45 insertions, 47 deletions
diff --git a/xlators/performance/io-threads/src/io-threads.h b/xlators/performance/io-threads/src/io-threads.h index 7124169b795..949d1d1b1e0 100644 --- a/xlators/performance/io-threads/src/io-threads.h +++ b/xlators/performance/io-threads/src/io-threads.h @@ -11,7 +11,6 @@ #ifndef __IOT_H #define __IOT_H - #include "compat-errno.h" #include "glusterfs.h" #include "logging.h" @@ -25,61 +24,60 @@ #include <semaphore.h> #include "statedump.h" - struct iot_conf; -#define MAX_IDLE_SKEW 4 /* In secs */ -#define skew_sec_idle_time(sec) ((sec) + (random () % MAX_IDLE_SKEW)) -#define IOT_DEFAULT_IDLE 120 /* In secs. */ +#define MAX_IDLE_SKEW 4 /* In secs */ +#define skew_sec_idle_time(sec) ((sec) + (random() % MAX_IDLE_SKEW)) +#define IOT_DEFAULT_IDLE 120 /* In secs. */ -#define IOT_MIN_THREADS 1 -#define IOT_DEFAULT_THREADS 16 -#define IOT_MAX_THREADS 64 +#define IOT_MIN_THREADS 1 +#define IOT_DEFAULT_THREADS 16 +#define IOT_MAX_THREADS 64 -#define IOT_THREAD_STACK_SIZE ((size_t)(256*1024)) +#define IOT_THREAD_STACK_SIZE ((size_t)(256 * 1024)) typedef struct { - struct list_head clients; - struct list_head reqs; + struct list_head clients; + struct list_head reqs; } iot_client_ctx_t; struct iot_conf { - pthread_mutex_t mutex; - pthread_cond_t cond; - - int32_t max_count; /* configured maximum */ - int32_t curr_count; /* actual number of threads running */ - int32_t sleep_count; - - int32_t idle_time; /* in seconds */ - - struct list_head clients[GF_FOP_PRI_MAX]; - /* - * It turns out that there are several ways a frame can get to us - * without having an associated client (server_first_lookup was the - * first one I hit). Instead of trying to update all such callers, - * we use this to queue them. - */ - iot_client_ctx_t no_client[GF_FOP_PRI_MAX]; - - int32_t ac_iot_limit[GF_FOP_PRI_MAX]; - int32_t ac_iot_count[GF_FOP_PRI_MAX]; - int queue_sizes[GF_FOP_PRI_MAX]; - int queue_size; - pthread_attr_t w_attr; - gf_boolean_t least_priority; /*Enable/Disable least-priority */ - - xlator_t *this; - size_t stack_size; - gf_boolean_t down; /*PARENT_DOWN event is notified*/ - gf_boolean_t mutex_inited; - gf_boolean_t cond_inited; - - int32_t watchdog_secs; - gf_boolean_t watchdog_running; - pthread_t watchdog_thread; - gf_boolean_t queue_marked[GF_FOP_PRI_MAX]; - gf_boolean_t cleanup_disconnected_reqs; + pthread_mutex_t mutex; + pthread_cond_t cond; + + int32_t max_count; /* configured maximum */ + int32_t curr_count; /* actual number of threads running */ + int32_t sleep_count; + + int32_t idle_time; /* in seconds */ + + struct list_head clients[GF_FOP_PRI_MAX]; + /* + * It turns out that there are several ways a frame can get to us + * without having an associated client (server_first_lookup was the + * first one I hit). Instead of trying to update all such callers, + * we use this to queue them. + */ + iot_client_ctx_t no_client[GF_FOP_PRI_MAX]; + + int32_t ac_iot_limit[GF_FOP_PRI_MAX]; + int32_t ac_iot_count[GF_FOP_PRI_MAX]; + int queue_sizes[GF_FOP_PRI_MAX]; + int queue_size; + pthread_attr_t w_attr; + gf_boolean_t least_priority; /*Enable/Disable least-priority */ + + xlator_t *this; + size_t stack_size; + gf_boolean_t down; /*PARENT_DOWN event is notified*/ + gf_boolean_t mutex_inited; + gf_boolean_t cond_inited; + + int32_t watchdog_secs; + gf_boolean_t watchdog_running; + pthread_t watchdog_thread; + gf_boolean_t queue_marked[GF_FOP_PRI_MAX]; + gf_boolean_t cleanup_disconnected_reqs; }; typedef struct iot_conf iot_conf_t; |