diff options
author | Krutika Dhananjay <kdhananj@redhat.com> | 2013-08-28 21:56:55 +0530 |
---|---|---|
committer | Krutika Dhananjay <kdhananj@redhat.com> | 2013-09-06 14:57:10 +0530 |
commit | 058fba286b077f2cb279dc786e8c892ed8a6b199 (patch) | |
tree | 655d54f94060ee9947ec06ad764658de6fbd8ce7 /xlators/mgmt | |
parent | 9e78640d658e0de9f29cfa7755adaf49770e55d1 (diff) |
glusterd: Destroy volinfo->quota_conf_shandle during 'volume delete'
... and also remove auxiliary mount, if it exists.
Change-Id: I91ac3f434df3e03ea914051d1d6890e7a05a3cad
Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com>
Diffstat (limited to 'xlators/mgmt')
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-quota.c | 39 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 41 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.h | 3 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-volume-ops.c | 4 |
4 files changed, 48 insertions, 39 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-quota.c b/xlators/mgmt/glusterd/src/glusterd-quota.c index e02f149a..60360594 100644 --- a/xlators/mgmt/glusterd/src/glusterd-quota.c +++ b/xlators/mgmt/glusterd/src/glusterd-quota.c @@ -484,45 +484,6 @@ out: return ret; } -static int -glusterd_remove_auxiliary_mount (char *volname) -{ - int ret = -1; - runner_t runner = {0,}; - char mountdir[PATH_MAX] = {0,}; - char pidfile[PATH_MAX] = {0,}; - xlator_t *this = NULL; - - this = THIS; - GF_ASSERT (this); - - GLUSTERFS_GET_AUX_MOUNT_PIDFILE (pidfile, volname); - - if (!gf_is_service_running (pidfile, NULL)) { - gf_log (this->name, GF_LOG_DEBUG, "Aux mount of volume %s " - "absent, hence returning", volname); - return 0; - } - - snprintf (mountdir, sizeof (mountdir)-1, "/tmp/%s", volname); - - runinit (&runner); - runner_add_args (&runner, "umount", - -#if GF_LINUX_HOST_OS - "-l", -#endif - mountdir, NULL); - ret = runner_run_reuse (&runner); - if (ret) - gf_log (this->name, GF_LOG_ERROR, "umount on %s failed, " - "reason : %s", mountdir, strerror (errno)); - runner_end (&runner); - - rmdir (mountdir); - return ret; -} - int32_t glusterd_quota_disable (glusterd_volinfo_t *volinfo, char **op_errstr) { diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index 9a761d74..162cf06f 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -562,6 +562,8 @@ glusterd_volinfo_delete (glusterd_volinfo_t *volinfo) dict_unref (volinfo->gsync_slaves); GF_FREE (volinfo->logdir); + gf_store_handle_destroy (volinfo->quota_conf_shandle); + glusterd_auth_cleanup (volinfo); GF_FREE (volinfo); @@ -8353,3 +8355,42 @@ glusterd_store_quota_conf_stamp_header (xlator_t *this, int fd) out: return ret; } + +int +glusterd_remove_auxiliary_mount (char *volname) +{ + int ret = -1; + runner_t runner = {0,}; + char mountdir[PATH_MAX] = {0,}; + char pidfile[PATH_MAX] = {0,}; + xlator_t *this = NULL; + + this = THIS; + GF_ASSERT (this); + + GLUSTERFS_GET_AUX_MOUNT_PIDFILE (pidfile, volname); + + if (!gf_is_service_running (pidfile, NULL)) { + gf_log (this->name, GF_LOG_DEBUG, "Aux mount of volume %s " + "absent, hence returning", volname); + return 0; + } + + snprintf (mountdir, sizeof (mountdir)-1, "/tmp/%s", volname); + + runinit (&runner); + runner_add_args (&runner, "umount", + +#if GF_LINUX_HOST_OS + "-l", +#endif + mountdir, NULL); + ret = runner_run_reuse (&runner); + if (ret) + gf_log (this->name, GF_LOG_ERROR, "umount on %s failed, " + "reason : %s", mountdir, strerror (errno)); + runner_end (&runner); + + rmdir (mountdir); + return ret; +} diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.h b/xlators/mgmt/glusterd/src/glusterd-utils.h index 4a5fc10e..444a6d95 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.h +++ b/xlators/mgmt/glusterd/src/glusterd-utils.h @@ -604,4 +604,7 @@ glusterd_store_quota_conf_skip_header (xlator_t *this, int fd); int glusterd_store_quota_conf_stamp_header (xlator_t *this, int fd); +int +glusterd_remove_auxiliary_mount (char *volname); + #endif diff --git a/xlators/mgmt/glusterd/src/glusterd-volume-ops.c b/xlators/mgmt/glusterd/src/glusterd-volume-ops.c index e6d12f04..51e49e4c 100644 --- a/xlators/mgmt/glusterd/src/glusterd-volume-ops.c +++ b/xlators/mgmt/glusterd/src/glusterd-volume-ops.c @@ -1820,6 +1820,10 @@ glusterd_op_delete_volume (dict_t *dict) goto out; } + ret = glusterd_remove_auxiliary_mount (volname); + if (ret) + goto out; + ret = glusterd_delete_volume (volinfo); out: gf_log (this->name, GF_LOG_DEBUG, "returning %d", ret); |