diff options
author | Anuradha Talur <atalur@redhat.com> | 2015-12-09 14:50:41 +0530 |
---|---|---|
committer | Pranith Kumar Karampuri <pkarampu@redhat.com> | 2015-12-21 22:56:09 -0800 |
commit | 21368d565d94f4dea2ff119c86bf93cd90514848 (patch) | |
tree | beab2098adcbc28a63f6bde2360d2a97581b11e0 /heal | |
parent | 7ef768acf706b2f08bbb2b48ef75d9abcc66b5be (diff) |
heal : Do not print heal count on ENOTCONN
Backport of http://review.gluster.org/12919
When a brick is not reachable due to ENOTCONN,
there are no entries gathered and this information
should not be printed.
It is a bug intorduced due to commit
9c378026e9561595586a817fee0b439e2c863a22, fixing it.
>Change-Id: I45559a9560c297854ea6b4177f86e0be30dc6b78
>BUG: 1250803
>Signed-off-by: Anuradha Talur <atalur@redhat.com>
>Reviewed-on: http://review.gluster.org/12919
>Tested-by: NetBSD Build System <jenkins@build.gluster.org>
>Tested-by: Gluster Build System <jenkins@build.gluster.com>
>Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
Change-Id: I5b217bc246a863d75b9d993886a6abada768745e
BUG: 1287531
Signed-off-by: Anuradha Talur <atalur@redhat.com>
Reviewed-on: http://review.gluster.org/13037
Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Tested-by: NetBSD Build System <jenkins@build.gluster.org>
Diffstat (limited to 'heal')
-rw-r--r-- | heal/src/glfs-heal.c | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/heal/src/glfs-heal.c b/heal/src/glfs-heal.c index ce9ffbbc70b..960fd20bb96 100644 --- a/heal/src/glfs-heal.c +++ b/heal/src/glfs-heal.c @@ -55,6 +55,10 @@ glfsh_print_heal_op_status (int ret, uint64_t num_entries, gf_xl_afr_op_t heal_op) { + if (ret == -ENOTCONN && num_entries == 0) { + printf ("Status: %s\n", strerror (-ret)); + return; + } if (ret < 0) { printf ("Failed to process entries completely. " "Number of entries so far: %"PRIu64"\n", num_entries); @@ -442,12 +446,10 @@ glfsh_print_pending_heals_type (glfs_t *fs, xlator_t *top_subvol, loc_t *rootloc ret = glfsh_get_index_dir_loc (rootloc, xl, &dirloc, &op_errno, vgfid); if (ret < 0) { - if (op_errno == ESTALE || op_errno == ENOENT) { + if (op_errno == ESTALE || op_errno == ENOENT) ret = 0; - } else { - printf ("Status: %s\n", strerror (op_errno)); + else ret = -op_errno; - } goto out; } @@ -466,7 +468,8 @@ out: void glfsh_print_pending_heals (glfs_t *fs, xlator_t *top_subvol, loc_t *rootloc, - xlator_t *xl, gf_xl_afr_op_t heal_op) + xlator_t *xl, gf_xl_afr_op_t heal_op, gf_boolean_t + is_parent_replicate) { int ret = 0; uint64_t count = 0, total = 0; @@ -493,7 +496,7 @@ glfsh_print_pending_heals (glfs_t *fs, xlator_t *top_subvol, loc_t *rootloc, if (ret == -ENOTCONN) goto out; - if (!strcmp (xl->type, "cluster/replicate")) { + if (is_parent_replicate) { ret = glfsh_print_pending_heals_type (fs, top_subvol, rootloc, xl, heal_op, xattr_req, @@ -587,7 +590,10 @@ glfsh_gather_heal_info (glfs_t *fs, xlator_t *top_subvol, loc_t *rootloc, THIS = heal_xl; glfsh_print_pending_heals (fs, top_subvol, rootloc, xl, - heal_op); + heal_op, + !strcmp + (heal_xl->type, + "cluster/replicate")); THIS = old_THIS; printf ("\n"); } @@ -705,8 +711,13 @@ glfsh_heal_from_brick_type (glfs_t *fs, xlator_t *top_subvol, loc_t *rootloc, ret = glfsh_get_index_dir_loc (rootloc, client, &dirloc, &op_errno, vgfid); - if (ret < 0) + if (ret < 0) { + if (op_errno == ESTALE || op_errno == ENOENT) + ret = 0; + else + ret = -op_errno; goto out; + } ret = syncop_dirfd (client, &dirloc, &fd, GF_CLIENT_PID_GLFS_HEAL); @@ -759,6 +770,9 @@ glfsh_heal_from_brick (glfs_t *fs, xlator_t *top_subvol, loc_t *rootloc, &count); total += count; count = 0; + if (ret == -ENOTCONN) + goto out; + ret = glfsh_heal_from_brick_type (fs, top_subvol, rootloc, hostname, brickpath, client, xattr_req, |