summaryrefslogtreecommitdiffstats
path: root/xlators/mgmt
diff options
context:
space:
mode:
Diffstat (limited to 'xlators/mgmt')
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-snapshot.c14
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-store.c12
2 files changed, 23 insertions, 3 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-snapshot.c b/xlators/mgmt/glusterd/src/glusterd-snapshot.c
index db1afd37b..f8a84cb26 100644
--- a/xlators/mgmt/glusterd/src/glusterd-snapshot.c
+++ b/xlators/mgmt/glusterd/src/glusterd-snapshot.c
@@ -3533,6 +3533,8 @@ glusterd_remove_snap (glusterd_brickinfo_t *brickinfo, const char *mount_pt,
glusterd_conf_t *priv = NULL;
runner_t runner = {0,};
char msg[1024] = {0, };
+ char pidfile[PATH_MAX] = {0, };
+ pid_t pid = -1;
this = THIS;
GF_ASSERT (this);
@@ -3557,6 +3559,18 @@ glusterd_remove_snap (glusterd_brickinfo_t *brickinfo, const char *mount_pt,
//usleep (24007);
//ret = umount2 (mount_pt, MNT_FORCE);
+
+ GLUSTERD_GET_SNAP_BRICK_PIDFILE (pidfile, volname, snapname, brickinfo,
+ priv);
+ if (glusterd_is_service_running (pidfile, &pid)) {
+ ret = kill (pid, SIGKILL);
+ if (ret && errno != ESRCH) {
+ gf_log (this->name, GF_LOG_ERROR, "Unable to kill pid "
+ "%d reason : %s", pid, strerror(errno));
+ goto out;
+ }
+ }
+
runinit (&runner);
snprintf (msg, sizeof (msg), "umount the snapshot mounted path %s",
mount_pt);
diff --git a/xlators/mgmt/glusterd/src/glusterd-store.c b/xlators/mgmt/glusterd/src/glusterd-store.c
index 5dfc96485..56a64145c 100644
--- a/xlators/mgmt/glusterd/src/glusterd-store.c
+++ b/xlators/mgmt/glusterd/src/glusterd-store.c
@@ -2048,9 +2048,15 @@ glusterd_store_delete_volume (glusterd_volinfo_t *volinfo,
GLUSTERD_GET_VOLUME_DIR (pathname, volinfo, priv);
}
- snprintf (delete_path, sizeof (delete_path),
- "%s/"GLUSTERD_TRASH"/%s.deleted", priv->workdir,
- uuid_utoa (volinfo->volume_id));
+ if (snapinfo == NULL ) {
+ snprintf (delete_path, sizeof (delete_path),
+ "%s/"GLUSTERD_TRASH"/%s.deleted", priv->workdir,
+ uuid_utoa (volinfo->volume_id));
+ } else {
+ snprintf (delete_path, sizeof (delete_path),
+ "%s/"GLUSTERD_TRASH"/%s.deleted", priv->workdir,
+ uuid_utoa (snapinfo->volume_id));
+ }
snprintf (trashdir, sizeof (trashdir), "%s/"GLUSTERD_TRASH,
priv->workdir);