summaryrefslogtreecommitdiffstats
path: root/xlators/mgmt/glusterd/src/glusterd-replace-brick.c
diff options
context:
space:
mode:
authorSanju Rakonde <srakonde@redhat.com>2018-10-30 16:36:50 +0530
committerAtin Mukherjee <amukherj@redhat.com>2018-11-02 02:08:53 +0000
commit6e8f7bb6ab457cfee42e405243cf4db82a9a56b8 (patch)
tree8964a39fafa9be837f5d25ef54fae23238cfb4af /xlators/mgmt/glusterd/src/glusterd-replace-brick.c
parent5d0c8e8ec9b68352cf53f8e430897096e2caf477 (diff)
glusterd: set fsid while performing replace brick
While performing the replace-brick operation, we should set fsid value to the new brick. fixes: bz#1637196 Change-Id: I9e9a4962fc0c2f5dff43e4ac11767814a0c0beaf Signed-off-by: Sanju Rakonde <srakonde@redhat.com>
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-replace-brick.c')
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-replace-brick.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-replace-brick.c b/xlators/mgmt/glusterd/src/glusterd-replace-brick.c
index 1248910990f..4c0982e87e2 100644
--- a/xlators/mgmt/glusterd/src/glusterd-replace-brick.c
+++ b/xlators/mgmt/glusterd/src/glusterd-replace-brick.c
@@ -347,6 +347,9 @@ glusterd_op_perform_replace_brick(glusterd_volinfo_t *volinfo, char *old_brick,
int32_t ret = -1;
xlator_t *this = NULL;
glusterd_conf_t *conf = NULL;
+ struct statvfs brickstat = {
+ 0,
+ };
this = THIS;
GF_ASSERT(this);
@@ -365,6 +368,21 @@ glusterd_op_perform_replace_brick(glusterd_volinfo_t *volinfo, char *old_brick,
if (ret)
goto out;
+ if (!gf_uuid_compare(new_brickinfo->uuid, MY_UUID)) {
+ ret = sys_statvfs(new_brickinfo->path, &brickstat);
+ if (ret) {
+ gf_msg(this->name, GF_LOG_ERROR, errno, GD_MSG_STATVFS_FAILED,
+ "Failed to fetch disk utilization "
+ "from the brick (%s:%s). Please check the health of "
+ "the brick. Error code was %s",
+ new_brickinfo->hostname, new_brickinfo->path,
+ strerror(errno));
+
+ goto out;
+ }
+ new_brickinfo->statfs_fsid = brickstat.f_fsid;
+ }
+
ret = glusterd_volume_brickinfo_get_by_brick(old_brick, volinfo,
&old_brickinfo, _gf_false);
if (ret)