diff options
Diffstat (limited to 'xlators/storage')
| -rw-r--r-- | xlators/storage/posix/src/posix-common.c | 47 | ||||
| -rw-r--r-- | xlators/storage/posix/src/posix-helpers.c | 1 | 
2 files changed, 28 insertions, 20 deletions
diff --git a/xlators/storage/posix/src/posix-common.c b/xlators/storage/posix/src/posix-common.c index f1fa81e056b..345d35e3e9a 100644 --- a/xlators/storage/posix/src/posix-common.c +++ b/xlators/storage/posix/src/posix-common.c @@ -105,7 +105,6 @@ extern char *marker_xattrs[];          (lutimes (path, tv))  #endif -  int32_t  posix_priv (xlator_t *this)  { @@ -148,6 +147,9 @@ posix_notify (xlator_t *this,          void *data,          ...)  { +        struct posix_private *priv = NULL; + +        priv = this->private;          switch (event)          {          case GF_EVENT_PARENT_UP: @@ -156,6 +158,31 @@ posix_notify (xlator_t *this,                  default_notify (this, GF_EVENT_CHILD_UP, data);          }          break; +        case GF_EVENT_CLEANUP: +                if (priv->health_check) { +                        priv->health_check_active = _gf_false; +                        pthread_cancel (priv->health_check); +                        priv->health_check = 0; +                } +                if (priv->disk_space_check) { +                        priv->disk_space_check_active = _gf_false; +                        pthread_cancel (priv->disk_space_check); +                        priv->disk_space_check = 0; +                } +                if (priv->janitor) { +                        (void) gf_thread_cleanup_xint (priv->janitor); +                        priv->janitor = 0; +                } +                if (priv->fsyncer) { +                        (void) gf_thread_cleanup_xint (priv->fsyncer); +                        priv->fsyncer = 0; +                } +                if (priv->mount_lock) { +                        (void) sys_closedir (priv->mount_lock); +                        priv->mount_lock = NULL; +                } + +        break;          default:                  /* */                  break; @@ -1106,24 +1133,6 @@ posix_fini (xlator_t *this)          if (!priv)                  return;          this->private = NULL; -        if (priv->health_check) { -                priv->health_check_active = _gf_false; -                pthread_cancel (priv->health_check); -                priv->health_check = 0; -        } -        if (priv->disk_space_check) { -                priv->disk_space_check_active = _gf_false; -                pthread_cancel (priv->disk_space_check); -                priv->disk_space_check = 0; -        } -        if (priv->janitor) { -                (void) gf_thread_cleanup_xint (priv->janitor); -                priv->janitor = 0; -        } -        if (priv->fsyncer) { -                (void) gf_thread_cleanup_xint (priv->fsyncer); -                priv->fsyncer = 0; -        }          /*unlock brick dir*/          if (priv->mount_lock)                  (void) sys_closedir (priv->mount_lock); diff --git a/xlators/storage/posix/src/posix-helpers.c b/xlators/storage/posix/src/posix-helpers.c index 377389d22a3..56c9b4afe94 100644 --- a/xlators/storage/posix/src/posix-helpers.c +++ b/xlators/storage/posix/src/posix-helpers.c @@ -2060,7 +2060,6 @@ abort:                          gf_log (THIS->name, GF_LOG_INFO, "detaching not-only "                                  " child %s", priv->base_path);                          top->notify (top, GF_EVENT_CLEANUP, victim); -                        xlator_mem_cleanup (victim);                  }          }  | 
