diff --git a/0533-glusterd-glusterd-memory-leak-while-running-gluster-.patch b/0533-glusterd-glusterd-memory-leak-while-running-gluster-.patch new file mode 100644 index 0000000..b72d4a8 --- /dev/null +++ b/0533-glusterd-glusterd-memory-leak-while-running-gluster-.patch @@ -0,0 +1,75 @@ +From 5b57b686984498eee09ce1a5f27eef6a14e4387e Mon Sep 17 00:00:00 2001 +From: Mohit Agrawal +Date: Wed, 6 Mar 2019 12:55:56 +0530 +Subject: [PATCH 533/534] glusterd: glusterd memory leak while running "gluster + v profile" in a loop + +Problem: glusterd has memory leak while running "gluster v profile" + in a loop + +Solution: Resolve leak code path to avoid leak + +> Change-Id: Id608703ff6d0ad34ed8f921a5d25544e24cfadcd +> fixes: bz#1685414 +> Cherry pick from commit 9374484917466dff4688d96ff7faa0de1c804a6c +> Reviewed on upstream link https://review.gluster.org/#/c/glusterfs/+/22301/ + +Change-Id: I874a0e9947913c201c67b78aaaa982d1fae78b46 +BUG: 1684648 +Signed-off-by: Mohit Agrawal +Reviewed-on: https://code.engineering.redhat.com/gerrit/164609 +Tested-by: RHGS Build Bot +Reviewed-by: Sunil Kumar Heggodu Gopala Acharya +--- + xlators/mgmt/glusterd/src/glusterd-mgmt.c | 5 +++-- + xlators/mgmt/glusterd/src/glusterd-syncop.c | 4 +++- + 2 files changed, 6 insertions(+), 3 deletions(-) + +diff --git a/xlators/mgmt/glusterd/src/glusterd-mgmt.c b/xlators/mgmt/glusterd/src/glusterd-mgmt.c +index 275059c..e176288 100644 +--- a/xlators/mgmt/glusterd/src/glusterd-mgmt.c ++++ b/xlators/mgmt/glusterd/src/glusterd-mgmt.c +@@ -1380,8 +1380,9 @@ out: + if (rsp.op_errstr) + free (rsp.op_errstr); + +- if (rsp.dict.dict_val) +- free (rsp.dict.dict_val); ++ if (rsp_dict) ++ dict_unref (rsp_dict); ++ + GF_FREE (peerid); + /* req->rpc_status set to -1 means, STACK_DESTROY will be called from + * the caller function. +diff --git a/xlators/mgmt/glusterd/src/glusterd-syncop.c b/xlators/mgmt/glusterd/src/glusterd-syncop.c +index 7baef64..3b7fa8b 100644 +--- a/xlators/mgmt/glusterd/src/glusterd-syncop.c ++++ b/xlators/mgmt/glusterd/src/glusterd-syncop.c +@@ -1707,6 +1707,7 @@ gd_brick_op_phase (glusterd_op_t op, dict_t *op_ctx, dict_t *req_dict, + char **op_errstr) + { + glusterd_pending_node_t *pending_node = NULL; ++ glusterd_pending_node_t *tmp = NULL; + struct cds_list_head selected = {0,}; + xlator_t *this = NULL; + int brick_count = 0; +@@ -1742,7 +1743,7 @@ gd_brick_op_phase (glusterd_op_t op, dict_t *op_ctx, dict_t *req_dict, + rsp_dict = NULL; + + brick_count = 0; +- cds_list_for_each_entry (pending_node, &selected, list) { ++ cds_list_for_each_entry_safe (pending_node, tmp, &selected, list) { + rpc = glusterd_pending_node_get_rpc (pending_node); + if (!rpc) { + if (pending_node->type == GD_NODE_REBALANCE) { +@@ -1792,6 +1793,7 @@ gd_brick_op_phase (glusterd_op_t op, dict_t *op_ctx, dict_t *req_dict, + + brick_count++; + glusterd_pending_node_put_rpc (pending_node); ++ GF_FREE(pending_node); + } + + pending_node = NULL; +-- +1.8.3.1 + diff --git a/0534-fuse-make-sure-the-send-lookup-on-root-instead-of-ge.patch b/0534-fuse-make-sure-the-send-lookup-on-root-instead-of-ge.patch new file mode 100644 index 0000000..2a4efbe --- /dev/null +++ b/0534-fuse-make-sure-the-send-lookup-on-root-instead-of-ge.patch @@ -0,0 +1,74 @@ +From 1454b4a477bf841d6bea610b3bb0b084730d38ab Mon Sep 17 00:00:00 2001 +From: Amar Tumballi +Date: Fri, 13 Apr 2018 10:28:01 +0530 +Subject: [PATCH 534/534] fuse: make sure the send lookup on root instead of + getattr() + +This change was done in https://review.gluster.org/16945. While the +changes added there were required, it was not necessary to remove the +getattr part. As fuse's lookup on root(/) comes as getattr only, this +change is very much required. + +The previous fix for this bug was to add the check for revalidation in +lookup when it was sent on root. But I had removed the part where +getattr is coming on root. The removing was not requried to fix the +issue then. Added back this part of the code, to make sure we have +proper validation of root inode in many places like acl, etc. + +upstream patch: https://review.gluster.org/#/c/glusterfs/+/19867/ + +> updates: bz#1437780 +> Change-Id: I859c4ee1a3f407465cbf19f8934530848424ff50 +> Signed-off-by: Amar Tumballi + +Change-Id: I85af744e7bd1a52367d85d5a5b07c4bdf409a66d +BUG: 1668327 +Signed-off-by: N Balachandran +Reviewed-on: https://code.engineering.redhat.com/gerrit/164663 +Tested-by: RHGS Build Bot +Reviewed-by: Sunil Kumar Heggodu Gopala Acharya +--- + xlators/mount/fuse/src/fuse-bridge.c | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + +diff --git a/xlators/mount/fuse/src/fuse-bridge.c b/xlators/mount/fuse/src/fuse-bridge.c +index 175e1b8..ffc1013 100644 +--- a/xlators/mount/fuse/src/fuse-bridge.c ++++ b/xlators/mount/fuse/src/fuse-bridge.c +@@ -1311,6 +1311,7 @@ fuse_getattr (xlator_t *this, fuse_in_header_t *finh, void *msg, + fuse_private_t *priv = NULL; + #endif + fuse_state_t *state; ++ int ret = -1; + + GET_STATE (this, finh, state); + #if FUSE_KERNEL_MINOR_VERSION >= 9 +@@ -1318,6 +1319,25 @@ fuse_getattr (xlator_t *this, fuse_in_header_t *finh, void *msg, + if (priv->proto_minor >= 9 && fgi->getattr_flags & FUSE_GETATTR_FH) + state->fd = fd_ref ((fd_t *)fgi->fh); + #endif ++ if (finh->nodeid == 1) { ++ state->gfid[15] = 1; ++ ++ ret = fuse_loc_fill (&state->loc, state, finh->nodeid, 0, NULL); ++ if (ret < 0) { ++ gf_log ("glusterfs-fuse", GF_LOG_WARNING, ++ "%"PRIu64": GETATTR on / (fuse_loc_fill() failed)", ++ finh->unique); ++ send_fuse_err (this, finh, ENOENT); ++ free_fuse_state (state); ++ return; ++ } ++ ++ fuse_gfid_set (state); ++ ++ FUSE_FOP (state, fuse_root_lookup_cbk, GF_FOP_LOOKUP, ++ lookup, &state->loc, state->xdata); ++ return; ++ } + + if (state->fd) + fuse_resolve_fd_init (state, &state->resolve, state->fd); +-- +1.8.3.1 + diff --git a/glusterfs.spec b/glusterfs.spec index 3bd97dc..35a1dd1 100644 --- a/glusterfs.spec +++ b/glusterfs.spec @@ -192,7 +192,7 @@ Release: 0.1%{?prereltag:.%{prereltag}}%{?dist} %else Name: glusterfs Version: 3.12.2 -Release: 45%{?dist} +Release: 46%{?dist} %endif License: GPLv2 or LGPLv3+ Group: System Environment/Base @@ -797,6 +797,8 @@ Patch0529: 0529-fuse-SETLKW-interrupt.patch Patch0530: 0530-spec-fix-lua-script-execution-during-install.patch Patch0531: 0531-fuse-remove-the-duplicate-FUSE_FOP-calls.patch Patch0532: 0532-dht-fix-double-extra-unref-of-inode-at-heal-path.patch +Patch0533: 0533-glusterd-glusterd-memory-leak-while-running-gluster-.patch +Patch0534: 0534-fuse-make-sure-the-send-lookup-on-root-instead-of-ge.patch %description GlusterFS is a distributed file-system capable of scaling to several @@ -2661,6 +2663,9 @@ fi %endif %changelog +* Thu Mar 07 2019 Milind Changire - 3.12.2-46 +- fixes bugs bz#1668327 bz#1684648 + * Thu Feb 21 2019 Milind Changire - 3.12.2-45 - fixes bugs bz#1678232