diff options
| -rw-r--r-- | xlators/features/quota/src/quotad-aggregator.c | 10 | ||||
| -rw-r--r-- | xlators/features/quota/src/quotad.c | 32 | 
2 files changed, 38 insertions, 4 deletions
diff --git a/xlators/features/quota/src/quotad-aggregator.c b/xlators/features/quota/src/quotad-aggregator.c index 6c9c40a122f..8a7cfdca3f5 100644 --- a/xlators/features/quota/src/quotad-aggregator.c +++ b/xlators/features/quota/src/quotad-aggregator.c @@ -374,6 +374,11 @@ quotad_aggregator_init (xlator_t *this)          priv = this->private; +        if (priv->rpcsvc) { +                /* Listener already created */ +                return 0; +        } +          ret = dict_set_str (this->options, "transport.address-family", "unix");          if (ret)                  goto out; @@ -423,6 +428,11 @@ quotad_aggregator_init (xlator_t *this)          ret = 0;  out: +        if (ret && priv->rpcsvc) { +                GF_FREE (priv->rpcsvc); +                priv->rpcsvc = NULL; +        } +          return ret;  } diff --git a/xlators/features/quota/src/quotad.c b/xlators/features/quota/src/quotad.c index 243b943e986..028c8047141 100644 --- a/xlators/features/quota/src/quotad.c +++ b/xlators/features/quota/src/quotad.c @@ -11,6 +11,18 @@  #include "quotad-aggregator.h"  #include "common-utils.h" +int +qd_notify (xlator_t *this, int32_t event, void *data, ...) +{ +        switch (event) { +        case GF_EVENT_PARENT_UP: +                quotad_aggregator_init (this); +        } + +        default_notify (this, event, data); +        return 0; +} +  int32_t  mem_acct_init (xlator_t *this)  { @@ -147,6 +159,21 @@ qd_reconfigure (xlator_t *this, dict_t *options)  void  qd_fini (xlator_t *this)  { +        quota_priv_t    *priv           = NULL; + +        if (this == NULL || this->private == NULL) +                goto out; + +        priv = this->private; + +        if (priv->rpcsvc) { +                GF_FREE (priv->rpcsvc); +                priv->rpcsvc = NULL; +        } + +        GF_FREE (priv); + +out:          return;  } @@ -169,10 +196,6 @@ qd_init (xlator_t *this)          this->private = priv; -        ret = quotad_aggregator_init (this); -        if (ret < 0) -                goto err; -          ret = 0;  err:          if (ret) { @@ -185,6 +208,7 @@ class_methods_t class_methods = {          .init           = qd_init,          .fini           = qd_fini,          .reconfigure    = qd_reconfigure, +        .notify         = qd_notify  };  struct xlator_fops fops = {  | 
