diff options
author | Krishnan Parthasarathi <kp@gluster.com> | 2012-05-25 23:41:19 +0530 |
---|---|---|
committer | Vijay Bellur <vijay@gluster.com> | 2012-05-29 03:16:58 -0700 |
commit | 02a25d55acfbc5d38e2426438c5055cac6ac569b (patch) | |
tree | 5fc878b909ca352f5c1b05b9a70a524bc7233f94 /xlators/mgmt/glusterd/src/glusterd-hooks.h | |
parent | 0418b0861230072f5a7b59fd54536db1b4a20843 (diff) |
glusterd: Run post hooks on a different thread
This change ensures post hooks can 'wait' if need be
and _not_ prevent glusterd from being able to run other operations
meanwhile.
Also ensures that post hook scripts are 'serialized'
between transactions. ie, post hook scripts of txn1 are completed
before post hook scripts of txn2 are started, where txn1 happens before
txn2.
Change-Id: Iaeb676737d8c67e7151127c8d1fd8c2891e10aee
BUG: 806996
Signed-off-by: Krishnan Parthasarathi <kp@gluster.com>
Reviewed-on: http://review.gluster.com/3450
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Amar Tumballi <amarts@redhat.com>
Tested-by: Amar Tumballi <amarts@redhat.com>
Reviewed-by: Vijay Bellur <vijay@gluster.com>
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-hooks.h')
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-hooks.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-hooks.h b/xlators/mgmt/glusterd/src/glusterd-hooks.h index 02d9e433137..120fd5a4781 100644 --- a/xlators/mgmt/glusterd/src/glusterd-hooks.h +++ b/xlators/mgmt/glusterd/src/glusterd-hooks.h @@ -38,6 +38,23 @@ typedef enum glusterd_commit_hook_type { GD_COMMIT_HOOK_MAX } glusterd_commit_hook_type_t; +typedef struct hooks_private { + struct list_head list; + int waitcount; //debug purposes + pthread_mutex_t mutex; + pthread_cond_t cond; + pthread_t worker; +} glusterd_hooks_private_t; + +typedef struct hooks_stub { + struct list_head all_hooks; + char *scriptdir; + glusterd_op_t op; + dict_t *op_ctx; + +} glusterd_hooks_stub_t; + + int glusterd_hooks_create_hooks_directory (char *basedir); @@ -47,4 +64,18 @@ glusterd_hooks_get_hooks_cmd_subdir (glusterd_op_t op); int glusterd_hooks_run_hooks (char *hooks_path, glusterd_op_t op, dict_t *op_ctx, glusterd_commit_hook_type_t type); +int +glusterd_hooks_spawn_worker (xlator_t *this); + +int +glusterd_hooks_stub_init (glusterd_hooks_stub_t **stub, char *scriptdir, + glusterd_op_t op, dict_t *op_ctx); +void +glusterd_hooks_stub_cleanup (glusterd_hooks_stub_t *stub); + +int +glusterd_hooks_post_stub_enqueue (char *scriptdir, glusterd_op_t op, + dict_t *op_ctx); +int +glusterd_hooks_priv_init (glusterd_hooks_private_t **new); #endif |