diff options
| author | Mohammed Rafi KC <rkavunga@redhat.com> | 2020-03-10 21:06:20 +0530 | 
|---|---|---|
| committer | Sunny Kumar <sunkumar@redhat.com> | 2020-03-12 11:27:16 +0000 | 
| commit | 75691851391694d27ad5dcb797df8d4a82fd9e2d (patch) | |
| tree | 6ffe56158266d186c34efc608deb6e7ca6910c00 | |
| parent | 131d24d0c06ca82015256b98695421e09d27304a (diff) | |
glusterd/snapshot: Add a warning message when a volume config changes
While changing a volume configuration, there is a chance that the
brick layout on the disk might be changed. If snapshot is present
on such volumes that will effects it's working. So this patch adds
a warning message if snapshot is present while a volume config change
happen.
Change-Id: I7256863fef734841fce0bc9ad94d5d201b1813d5
Fixes: bz#1812144
Signed-off-by: Mohammed Rafi KC <rkavunga@redhat.com>
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-brick-ops.c | 27 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-messages.h | 2 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-replace-brick.c | 12 | 
3 files changed, 40 insertions, 1 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-brick-ops.c b/xlators/mgmt/glusterd/src/glusterd-brick-ops.c index 5e5421ed2dc..3af2867b82a 100644 --- a/xlators/mgmt/glusterd/src/glusterd-brick-ops.c +++ b/xlators/mgmt/glusterd/src/glusterd-brick-ops.c @@ -1448,6 +1448,18 @@ glusterd_op_stage_add_brick(dict_t *dict, char **op_errstr, dict_t *rsp_dict)          goto out;      } +    if (volinfo->snap_count > 0 || !cds_list_empty(&volinfo->snap_volumes)) { +        snprintf(msg, sizeof(msg), +                 "Volume %s  has %" PRIu64 +                 " snapshots. " +                 "Changing the volume configuration will not effect snapshots." +                 "But the snapshot brick mount should be intact to " +                 "make them function.", +                 volname, volinfo->snap_count); +        gf_msg("glusterd", GF_LOG_WARNING, 0, GD_MSG_SNAP_WARN, "%s", msg); +        msg[0] = '\0'; +    } +      ret = dict_get_int32n(dict, "count", SLEN("count"), &count);      if (ret) {          gf_msg("glusterd", GF_LOG_ERROR, errno, GD_MSG_DICT_GET_FAILED, @@ -1837,6 +1849,21 @@ glusterd_op_stage_remove_brick(dict_t *dict, char **op_errstr)                  goto out;              } +            if (volinfo->snap_count > 0 || +                !cds_list_empty(&volinfo->snap_volumes)) { +                snprintf(msg, sizeof(msg), +                         "Volume %s  has %" PRIu64 +                         " snapshots. " +                         "Changing the volume configuration will not effect " +                         "snapshots." +                         "But the snapshot brick mount should be intact to " +                         "make them function.", +                         volname, volinfo->snap_count); +                gf_msg("glusterd", GF_LOG_WARNING, 0, GD_MSG_SNAP_WARN, "%s", +                       msg); +                msg[0] = '\0'; +            } +              ret = glusterd_remove_brick_validate_bricks(                  cmd, brick_count, dict, volinfo, &errstr, GF_DEFRAG_CMD_NONE);              if (ret) diff --git a/xlators/mgmt/glusterd/src/glusterd-messages.h b/xlators/mgmt/glusterd/src/glusterd-messages.h index f75ba905372..435a43df85d 100644 --- a/xlators/mgmt/glusterd/src/glusterd-messages.h +++ b/xlators/mgmt/glusterd/src/glusterd-messages.h @@ -302,6 +302,6 @@ GLFS_MSGID(      GD_MSG_SHD_OBJ_GET_FAIL, GD_MSG_SVC_ATTACH_FAIL, GD_MSG_ATTACH_INFO,      GD_MSG_DETACH_INFO, GD_MSG_SVC_DETACH_FAIL,      GD_MSG_RPC_TRANSPORT_GET_PEERNAME_FAIL, GD_MSG_CLUSTER_RC_ENABLE, -    GD_MSG_NFS_GANESHA_DISABLED, GD_MSG_GANESHA_NOT_RUNNING); +    GD_MSG_NFS_GANESHA_DISABLED, GD_MSG_GANESHA_NOT_RUNNING, GD_MSG_SNAP_WARN);  #endif /* !_GLUSTERD_MESSAGES_H_ */ diff --git a/xlators/mgmt/glusterd/src/glusterd-replace-brick.c b/xlators/mgmt/glusterd/src/glusterd-replace-brick.c index a861240da31..3d13ef95ffd 100644 --- a/xlators/mgmt/glusterd/src/glusterd-replace-brick.c +++ b/xlators/mgmt/glusterd/src/glusterd-replace-brick.c @@ -227,6 +227,18 @@ glusterd_op_stage_replace_brick(dict_t *dict, char **op_errstr,          is_force = _gf_true;      } +    if (volinfo->snap_count > 0 || !cds_list_empty(&volinfo->snap_volumes)) { +        snprintf(msg, sizeof(msg), +                 "Volume %s  has %" PRIu64 +                 " snapshots. " +                 "Changing the volume configuration will not effect snapshots." +                 "But the snapshot brick mount should be intact to " +                 "make them function.", +                 volname, volinfo->snap_count); +        gf_msg("glusterd", GF_LOG_WARNING, 0, GD_MSG_SNAP_WARN, "%s", msg); +        msg[0] = '\0'; +    } +      ret = glusterd_get_dst_brick_info(&dst_brick, volname, op_errstr,                                        &dst_brickinfo, &host, dict,                                        &dup_dstbrick);  | 
