summaryrefslogtreecommitdiffstats
path: root/xlators/cluster/afr/src/afr-common.c
diff options
context:
space:
mode:
authorRavishankar N <ravishankar@redhat.com>2017-08-18 18:05:54 +0530
committerjiffin tony Thottan <jthottan@redhat.com>2017-09-07 06:46:19 +0000
commite6aaeda4c3a44f1c459adbd619ee7c6d0151b254 (patch)
tree4df780f1b30547b82c0ae25bb7184e4b908f2327 /xlators/cluster/afr/src/afr-common.c
parenta311911dcc1e80e9c70e8a9b356b8dfc9eda1193 (diff)
afr: check validity of afr_reply
...in various self-heal code paths. Originally found by Pranith in __afr_selfheal_name_impunge () Also change __afr_selfheal_assign_gfid() to send lookup only on those bricks that don't have a gfid matching that of the source. > Reviewed-on: https://review.gluster.org/18065 > Smoke: Gluster Build System <jenkins@build.gluster.org> > CentOS-regression: Gluster Build System <jenkins@build.gluster.org> (cherry picked from commit d594900dbca92c356152be65fce16f77c402117c) Change-Id: I70a2ccd750a2af92c5fc36e0eefb2b6125404b4a BUG: 1487319 Signed-off-by: Pranith Kumar K <pkarampu@redhat.com> Signed-off-by: Ravishankar N <ravishankar@redhat.com> Reviewed-on: https://review.gluster.org/18173 Smoke: Gluster Build System <jenkins@build.gluster.org> CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
Diffstat (limited to 'xlators/cluster/afr/src/afr-common.c')
-rw-r--r--xlators/cluster/afr/src/afr-common.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/xlators/cluster/afr/src/afr-common.c b/xlators/cluster/afr/src/afr-common.c
index cba18b2ff8f..f43668cbbe5 100644
--- a/xlators/cluster/afr/src/afr-common.c
+++ b/xlators/cluster/afr/src/afr-common.c
@@ -1693,6 +1693,19 @@ afr_local_transaction_cleanup (afr_local_t *local, xlator_t *this)
}
+void
+afr_reply_wipe (struct afr_reply *reply)
+{
+ if (reply->xdata) {
+ dict_unref (reply->xdata);
+ reply->xdata = NULL;
+ }
+
+ if (reply->xattr) {
+ dict_unref (reply->xattr);
+ reply->xattr = NULL;
+ }
+}
void
afr_replies_wipe (struct afr_reply *replies, int count)
@@ -1700,15 +1713,7 @@ afr_replies_wipe (struct afr_reply *replies, int count)
int i = 0;
for (i = 0; i < count; i++) {
- if (replies[i].xdata) {
- dict_unref (replies[i].xdata);
- replies[i].xdata = NULL;
- }
-
- if (replies[i].xattr) {
- dict_unref (replies[i].xattr);
- replies[i].xattr = NULL;
- }
+ afr_reply_wipe (&replies[i]);
}
}