diff options
Diffstat (limited to 'xlators/features/quota/src/quotad.c')
-rw-r--r-- | xlators/features/quota/src/quotad.c | 32 |
1 files changed, 28 insertions, 4 deletions
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 = { |