diff options
| -rw-r--r-- | api/src/glfs.c | 2 | ||||
| -rw-r--r-- | libglusterfs/src/common-utils.c | 27 | ||||
| -rw-r--r-- | libglusterfs/src/common-utils.h | 3 | ||||
| -rw-r--r-- | libglusterfs/src/syncop.c | 8 | ||||
| -rw-r--r-- | libglusterfs/src/timer.c | 2 | ||||
| -rw-r--r-- | rpc/rpc-transport/rdma/src/rdma.c | 27 | ||||
| -rw-r--r-- | rpc/rpc-transport/socket/src/socket.c | 2 | ||||
| -rw-r--r-- | xlators/cluster/dht/src/dht-common.c | 4 | ||||
| -rw-r--r-- | xlators/features/changelog/lib/src/gf-changelog.c | 4 | ||||
| -rw-r--r-- | xlators/features/changelog/src/changelog.c | 12 | ||||
| -rw-r--r-- | xlators/features/index/src/index.c | 2 | ||||
| -rw-r--r-- | xlators/mount/fuse/src/fuse-bridge.c | 8 | ||||
| -rw-r--r-- | xlators/performance/io-threads/src/io-threads.c | 2 | ||||
| -rw-r--r-- | xlators/storage/posix/src/posix-aio.c | 4 | ||||
| -rw-r--r-- | xlators/storage/posix/src/posix-helpers.c | 8 | ||||
| -rw-r--r-- | xlators/storage/posix/src/posix.c | 2 | 
16 files changed, 72 insertions, 45 deletions
diff --git a/api/src/glfs.c b/api/src/glfs.c index 1cb9088c0dc..7b056b5167b 100644 --- a/api/src/glfs.c +++ b/api/src/glfs.c @@ -559,7 +559,7 @@ glfs_init_common (struct glfs *fs)  	if (ret)  		return ret; -	ret = pthread_create (&fs->poller, NULL, glfs_poller, fs); +	ret = gf_thread_create (&fs->poller, NULL, glfs_poller, fs);  	if (ret)  		return ret; diff --git a/libglusterfs/src/common-utils.c b/libglusterfs/src/common-utils.c index f223a3f8a85..d57cd8a55fe 100644 --- a/libglusterfs/src/common-utils.c +++ b/libglusterfs/src/common-utils.c @@ -2807,6 +2807,7 @@ out:  } +  /* Sets log file path from user provided arguments */  int  gf_set_log_file_path (cmd_args_t *cmd_args) @@ -2868,3 +2869,29 @@ gf_set_log_file_path (cmd_args_t *cmd_args)  done:          return ret;  } + +int +gf_thread_create (pthread_t *thread, const pthread_attr_t *attr, +		  void *(*start_routine)(void *), void *arg) +{ +	sigset_t set, old; +	int ret; + +	sigemptyset (&set); + +	sigfillset (&set); +	sigdelset (&set, SIGSEGV); +	sigdelset (&set, SIGBUS); +	sigdelset (&set, SIGILL); +	sigdelset (&set, SIGSYS); +	sigdelset (&set, SIGFPE); +	sigdelset (&set, SIGABRT); + +	pthread_sigmask (SIG_BLOCK, &set, &old); + +	ret = pthread_create (thread, attr, start_routine, arg); + +	pthread_sigmask (SIG_SETMASK, &old, NULL); + +	return ret; +} diff --git a/libglusterfs/src/common-utils.h b/libglusterfs/src/common-utils.h index bc8a2db55ab..3c99a4212d0 100644 --- a/libglusterfs/src/common-utils.h +++ b/libglusterfs/src/common-utils.h @@ -588,4 +588,7 @@ gf_boolean_t gf_is_local_addr (char *hostname);  gf_boolean_t gf_is_same_address (char *host1, char *host2);  void md5_wrapper(const unsigned char *data, size_t len, char *md5); +int gf_thread_create (pthread_t *thread, const pthread_attr_t *attr, +		      void *(*start_routine)(void *), void *arg); +  #endif /* _COMMON_UTILS_H */ diff --git a/libglusterfs/src/syncop.c b/libglusterfs/src/syncop.c index d2c8381a3d3..cd267cacc57 100644 --- a/libglusterfs/src/syncop.c +++ b/libglusterfs/src/syncop.c @@ -453,8 +453,8 @@ syncenv_scale (struct syncenv *env)                          }                          env->proc[i].env = env; -                        ret = pthread_create (&env->proc[i].processor, NULL, -                                              syncenv_processor, &env->proc[i]); +                        ret = gf_thread_create (&env->proc[i].processor, NULL, +						syncenv_processor, &env->proc[i]);                          if (ret)                                  break;                          env->procs++; @@ -507,8 +507,8 @@ syncenv_new (size_t stacksize, int procmin, int procmax)          for (i = 0; i < newenv->procmin; i++) {                  newenv->proc[i].env = newenv; -                ret = pthread_create (&newenv->proc[i].processor, NULL, -                                      syncenv_processor, &newenv->proc[i]); +                ret = gf_thread_create (&newenv->proc[i].processor, NULL, +					syncenv_processor, &newenv->proc[i]);                  if (ret)                          break;                  newenv->procs++; diff --git a/libglusterfs/src/timer.c b/libglusterfs/src/timer.c index ae40142ad51..97a746b91d7 100644 --- a/libglusterfs/src/timer.c +++ b/libglusterfs/src/timer.c @@ -213,7 +213,7 @@ gf_timer_registry_init (glusterfs_ctx_t *ctx)                  reg->stale.prev = ®->stale;                  ctx->timer = reg; -                pthread_create (®->th, NULL, gf_timer_proc, ctx); +                gf_thread_create (®->th, NULL, gf_timer_proc, ctx);          }  out:          return ctx->timer; diff --git a/rpc/rpc-transport/rdma/src/rdma.c b/rpc/rpc-transport/rdma/src/rdma.c index 8ef7d1e3afa..6e6099a9854 100644 --- a/rpc/rpc-transport/rdma/src/rdma.c +++ b/rpc/rpc-transport/rdma/src/rdma.c @@ -619,10 +619,9 @@ gf_rdma_get_device (rpc_transport_t *this, struct ibv_context *ibctx,                  }                  /* completion threads */ -                ret = pthread_create (&trav->send_thread, -                                      NULL, -                                      gf_rdma_send_completion_proc, -                                      trav->send_chan); +                ret = gf_thread_create (&trav->send_thread, NULL, +					gf_rdma_send_completion_proc, +					trav->send_chan);                  if (ret) {                          gf_log (this->name, GF_LOG_ERROR,                                  "could not create send completion thread for " @@ -630,10 +629,9 @@ gf_rdma_get_device (rpc_transport_t *this, struct ibv_context *ibctx,                          goto out;                  } -                ret = pthread_create (&trav->recv_thread, -                                      NULL, -                                      gf_rdma_recv_completion_proc, -                                      trav->recv_chan); +                ret = gf_thread_create (&trav->recv_thread, NULL, +					 gf_rdma_recv_completion_proc, +					 trav->recv_chan);                  if (ret) {                          gf_log (this->name, GF_LOG_ERROR,                                  "could not create recv completion thread " @@ -641,10 +639,9 @@ gf_rdma_get_device (rpc_transport_t *this, struct ibv_context *ibctx,                          return NULL;                  } -                ret = pthread_create (&trav->async_event_thread, -                                      NULL, -                                      gf_rdma_async_event_thread, -                                      ibctx); +                ret = gf_thread_create (&trav->async_event_thread, NULL, +					 gf_rdma_async_event_thread, +					 ibctx);                  if (ret) {                          gf_log (this->name, GF_LOG_ERROR,                                  "could not create async_event_thread"); @@ -4198,9 +4195,9 @@ __gf_rdma_ctx_create (void)                  goto out;          } -        ret = pthread_create (&rdma_ctx->rdma_cm_thread, NULL, -                              gf_rdma_cm_event_handler, -                              rdma_ctx->rdma_cm_event_channel); +        ret = gf_thread_create (&rdma_ctx->rdma_cm_thread, NULL, +				gf_rdma_cm_event_handler, +				rdma_ctx->rdma_cm_event_channel);          if (ret != 0) {                  gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,                          "creation of thread to handle rdma-cm events " diff --git a/rpc/rpc-transport/socket/src/socket.c b/rpc/rpc-transport/socket/src/socket.c index 06b74b204b7..301d24dc72f 100644 --- a/rpc/rpc-transport/socket/src/socket.c +++ b/rpc/rpc-transport/socket/src/socket.c @@ -2423,7 +2423,7 @@ socket_spawn (rpc_transport_t *this)          gf_log (this->name, GF_LOG_TRACE,                  "spawning %p with gen %u", this, priv->ot_gen); -        if (pthread_create(&priv->thread,NULL,socket_poller,this) != 0) { +        if (gf_thread_create(&priv->thread,NULL,socket_poller,this) != 0) {                  gf_log (this->name, GF_LOG_ERROR,                          "could not create poll thread");          } diff --git a/xlators/cluster/dht/src/dht-common.c b/xlators/cluster/dht/src/dht-common.c index 57f75c9aa79..e0146c16722 100644 --- a/xlators/cluster/dht/src/dht-common.c +++ b/xlators/cluster/dht/src/dht-common.c @@ -5172,8 +5172,8 @@ unlock:                   * not need to handle CHILD_DOWN event here.                   */                  if (conf->defrag) { -                        ret = pthread_create (&conf->defrag->th, NULL, -                                              gf_defrag_start, this); +                        ret = gf_thread_create (&conf->defrag->th, NULL, +						gf_defrag_start, this);                          if (ret) {                                  conf->defrag = NULL;                                  GF_FREE (conf->defrag); diff --git a/xlators/features/changelog/lib/src/gf-changelog.c b/xlators/features/changelog/lib/src/gf-changelog.c index 15c6e84149a..ca8e373e700 100644 --- a/xlators/features/changelog/lib/src/gf-changelog.c +++ b/xlators/features/changelog/lib/src/gf-changelog.c @@ -483,8 +483,8 @@ gf_changelog_register (char *brick_path, char *scratch_dir,                  goto cleanup;          } -        ret = pthread_create (&gfc->gfc_changelog_processor, -                              NULL, gf_changelog_process, gfc); +        ret = gf_thread_create (&gfc->gfc_changelog_processor, +				NULL, gf_changelog_process, gfc);          if (ret) {                  errn = errno;                  gf_log (this->name, GF_LOG_ERROR, diff --git a/xlators/features/changelog/src/changelog.c b/xlators/features/changelog/src/changelog.c index 0e85ee7a0ab..0a70fa0c760 100644 --- a/xlators/features/changelog/src/changelog.c +++ b/xlators/features/changelog/src/changelog.c @@ -1030,15 +1030,15 @@ changelog_spawn_helper_threads (xlator_t *this, changelog_priv_t *priv)          int ret = 0;          priv->cr.this = this; -        ret = pthread_create (&priv->cr.rollover_th, -                              NULL, changelog_rollover, priv); +        ret = gf_thread_create (&priv->cr.rollover_th, +				NULL, changelog_rollover, priv);          if (ret)                  goto out;          if (priv->fsync_interval) {                  priv->cf.this = this; -                ret = pthread_create (&priv->cf.fsync_th, -                                      NULL, changelog_fsync_thread, priv); +                ret = gf_thread_create (&priv->cf.fsync_th, +					NULL, changelog_fsync_thread, priv);          }          if (ret) @@ -1102,8 +1102,8 @@ changelog_spawn_notifier (xlator_t *this, changelog_priv_t *priv)          priv->cn.this = this;          priv->cn.rfd  = pipe_fd[0]; -        ret = pthread_create (&priv->cn.notify_th, -                              NULL, changelog_notifier, priv); +        ret = gf_thread_create (&priv->cn.notify_th, +				NULL, changelog_notifier, priv);   out:          return ret; diff --git a/xlators/features/index/src/index.c b/xlators/features/index/src/index.c index 3245076ecef..259e8ec01de 100644 --- a/xlators/features/index/src/index.c +++ b/xlators/features/index/src/index.c @@ -1078,7 +1078,7 @@ init (xlator_t *this)          INIT_LIST_HEAD (&priv->callstubs);          this->private = priv; -        ret = pthread_create (&thread, &w_attr, index_worker, this); +        ret = gf_thread_create (&thread, &w_attr, index_worker, this);          if (ret) {                  gf_log (this->name, GF_LOG_WARNING, "Failed to create "                          "worker thread, aborting"); diff --git a/xlators/mount/fuse/src/fuse-bridge.c b/xlators/mount/fuse/src/fuse-bridge.c index 6805056828e..6fd8623b75a 100644 --- a/xlators/mount/fuse/src/fuse-bridge.c +++ b/xlators/mount/fuse/src/fuse-bridge.c @@ -3798,8 +3798,8 @@ fuse_init (xlator_t *this, fuse_in_header_t *finh, void *msg)                  }                  priv->revchan_in  = pfd[0];                  priv->revchan_out = pfd[1]; -                ret = pthread_create (&messenger, NULL, notify_kernel_loop, -                                      this); +                ret = gf_thread_create (&messenger, NULL, notify_kernel_loop, +					this);                  if (ret != 0) {                          gf_log ("glusterfs-fuse", GF_LOG_ERROR,                                  "failed to start messenger daemon (%s)", @@ -4973,8 +4973,8 @@ notify (xlator_t *this, int32_t event, void *data, ...)                  if (!private->fuse_thread_started) {                          private->fuse_thread_started = 1; -                        ret = pthread_create (&private->fuse_thread, NULL, -                                              fuse_thread_proc, this); +                        ret = gf_thread_create (&private->fuse_thread, NULL, +						fuse_thread_proc, this);                          if (ret != 0) {                                  gf_log (this->name, GF_LOG_DEBUG,                                          "pthread_create() failed (%s)", diff --git a/xlators/performance/io-threads/src/io-threads.c b/xlators/performance/io-threads/src/io-threads.c index d9a21878053..a5fcd0300d0 100644 --- a/xlators/performance/io-threads/src/io-threads.c +++ b/xlators/performance/io-threads/src/io-threads.c @@ -2534,7 +2534,7 @@ __iot_workers_scale (iot_conf_t *conf)          while (diff) {                  diff --; -                ret = pthread_create (&thread, &conf->w_attr, iot_worker, conf); +                ret = gf_thread_create (&thread, &conf->w_attr, iot_worker, conf);                  if (ret == 0) {                          conf->curr_count++;                          gf_log (conf->this->name, GF_LOG_DEBUG, diff --git a/xlators/storage/posix/src/posix-aio.c b/xlators/storage/posix/src/posix-aio.c index fad4a7df3da..5eed7f1a0b9 100644 --- a/xlators/storage/posix/src/posix-aio.c +++ b/xlators/storage/posix/src/posix-aio.c @@ -490,8 +490,8 @@ posix_aio_init (xlator_t *this)                  goto out;  	} -        ret = pthread_create (&priv->aiothread, NULL, -                              posix_aio_thread, this); +        ret = gf_thread_create (&priv->aiothread, NULL, +				posix_aio_thread, this);          if (ret != 0) {                  io_destroy (priv->ctxp);                  goto out; diff --git a/xlators/storage/posix/src/posix-helpers.c b/xlators/storage/posix/src/posix-helpers.c index 2fa55eda0ac..e1f87f4446c 100644 --- a/xlators/storage/posix/src/posix-helpers.c +++ b/xlators/storage/posix/src/posix-helpers.c @@ -884,8 +884,8 @@ posix_spawn_janitor_thread (xlator_t *this)          LOCK (&priv->lock);          {                  if (!priv->janitor_present) { -                        ret = pthread_create (&priv->janitor, NULL, -                                              posix_janitor_thread_proc, this); +                        ret = gf_thread_create (&priv->janitor, NULL, +						posix_janitor_thread_proc, this);                          if (ret < 0) {                                  gf_log (this->name, GF_LOG_ERROR, @@ -1227,8 +1227,8 @@ posix_spawn_health_check_thread (xlator_t *xl)                  if (priv->health_check_interval == 0)                          goto unlock; -                ret = pthread_create (&priv->health_check, NULL, -                                      posix_health_check_thread_proc, xl); +                ret = gf_thread_create (&priv->health_check, NULL, +					posix_health_check_thread_proc, xl);                  if (ret < 0) {                          priv->health_check_interval = 0;                          priv->health_check_active = _gf_false; diff --git a/xlators/storage/posix/src/posix.c b/xlators/storage/posix/src/posix.c index 3c7816cfb8c..650a2d3a77f 100644 --- a/xlators/storage/posix/src/posix.c +++ b/xlators/storage/posix/src/posix.c @@ -4855,7 +4855,7 @@ init (xlator_t *this)  	pthread_cond_init (&_private->fsync_cond, NULL);  	INIT_LIST_HEAD (&_private->fsyncs); -	ret = pthread_create (&_private->fsyncer, NULL, posix_fsyncer, this); +	ret = gf_thread_create (&_private->fsyncer, NULL, posix_fsyncer, this);  	if (ret) {  		gf_log (this->name, GF_LOG_ERROR, "fsyncer thread"  			" creation failed (%s)", strerror (errno));  | 
