autobuild v3.12.2-9
Resolves: bz#1546717 bz#1557551 bz#1558948 bz#1561999 bz#1563804 Resolves: bz#1565015 bz#1565119 bz#1565399 bz#1565577 bz#1567100 Resolves: bz#1567899 bz#1568374 bz#1568969 bz#1569490 bz#1570514 Resolves: bz#1570541 bz#1570582 bz#1571645 bz#1572087 bz#1572585 Resolves: bz#1575895 Signed-off-by: Milind Changire <mchangir@redhat.com>
This commit is contained in:
parent
c211c8d97e
commit
312c9bafe1
117
0237-cluster-dht-Fix-dht_rename-lock-order.patch
Normal file
117
0237-cluster-dht-Fix-dht_rename-lock-order.patch
Normal file
@ -0,0 +1,117 @@
|
||||
From 67c89f4fc9a80c9ed4a7d78df57c1ca76f4adc3d Mon Sep 17 00:00:00 2001
|
||||
From: N Balachandran <nbalacha@redhat.com>
|
||||
Date: Tue, 17 Apr 2018 15:37:05 +0530
|
||||
Subject: [PATCH 237/260] cluster/dht: Fix dht_rename lock order
|
||||
|
||||
Fixed dht_order_rename_lock to use the same inodelk ordering
|
||||
as that of the dht selfheal locks (dictionary order of
|
||||
lock subvolumes).
|
||||
|
||||
upstream: https://review.gluster.org/#/c/19886/
|
||||
|
||||
> Change-Id: Ia3f8353b33ea2fd3bc1ba7e8e777dda6c1d33e0d
|
||||
> fixes: bz#1568348
|
||||
> Signed-off-by: N Balachandran <nbalacha@redhat.com>
|
||||
|
||||
Change-Id: I09022705f5b77af0f50a2bab4579d4d3cb902155
|
||||
BUG: 1565119
|
||||
Signed-off-by: N Balachandran <nbalacha@redhat.com>
|
||||
Reviewed-on: https://code.engineering.redhat.com/gerrit/136451
|
||||
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
||||
Reviewed-by: Sunil Kumar Heggodu Gopala Acharya <sheggodu@redhat.com>
|
||||
---
|
||||
xlators/cluster/dht/src/dht-rename.c | 65 ++++++++++++++++++++++++++----------
|
||||
1 file changed, 47 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/xlators/cluster/dht/src/dht-rename.c b/xlators/cluster/dht/src/dht-rename.c
|
||||
index 3068499..ca6b5f4 100644
|
||||
--- a/xlators/cluster/dht/src/dht-rename.c
|
||||
+++ b/xlators/cluster/dht/src/dht-rename.c
|
||||
@@ -490,37 +490,66 @@ err:
|
||||
return 0;
|
||||
}
|
||||
|
||||
+
|
||||
+/*
|
||||
+ * If the hashed subvolumes of both source and dst are the different,
|
||||
+ * lock in dictionary order of hashed subvol->name. This is important
|
||||
+ * in case the parent directory is the same for both src and dst to
|
||||
+ * prevent inodelk deadlocks when racing with a fix-layout op on the parent.
|
||||
+ *
|
||||
+ * If the hashed subvols are the same, use the gfid/name to determine
|
||||
+ * the order of taking locks to prevent entrylk deadlocks when the parent
|
||||
+ * dirs are the same.
|
||||
+ *
|
||||
+ */
|
||||
static void
|
||||
dht_order_rename_lock (call_frame_t *frame, loc_t **loc, xlator_t **subvol)
|
||||
{
|
||||
- dht_local_t *local = NULL;
|
||||
- char src[GF_UUID_BNAME_BUF_SIZE] = {0};
|
||||
- char dst[GF_UUID_BNAME_BUF_SIZE] = {0};
|
||||
+ int ret = 0;
|
||||
+ dht_local_t *local = NULL;
|
||||
+ char src[GF_UUID_BNAME_BUF_SIZE] = {0};
|
||||
+ char dst[GF_UUID_BNAME_BUF_SIZE] = {0};
|
||||
+
|
||||
|
||||
local = frame->local;
|
||||
|
||||
- if (local->loc.pargfid)
|
||||
- uuid_utoa_r (local->loc.pargfid, src);
|
||||
- else if (local->loc.parent)
|
||||
- uuid_utoa_r (local->loc.parent->gfid, src);
|
||||
+ if (local->src_hashed->name == local->dst_hashed->name) {
|
||||
+ ret = 0;
|
||||
+ } else {
|
||||
+ ret = strcmp (local->src_hashed->name, local->dst_hashed->name);
|
||||
+ }
|
||||
|
||||
- strcat (src, local->loc.name);
|
||||
+ if (ret == 0) {
|
||||
|
||||
- if (local->loc2.pargfid)
|
||||
- uuid_utoa_r (local->loc2.pargfid, dst);
|
||||
- else if (local->loc2.parent)
|
||||
- uuid_utoa_r (local->loc2.parent->gfid, dst);
|
||||
+ /* hashed subvols are the same for src and dst */
|
||||
+ /* Entrylks need to be ordered*/
|
||||
+ if (local->loc.pargfid)
|
||||
+ uuid_utoa_r (local->loc.pargfid, src);
|
||||
+ else if (local->loc.parent)
|
||||
+ uuid_utoa_r (local->loc.parent->gfid, src);
|
||||
|
||||
- strcat (dst, local->loc2.name);
|
||||
+ strcat (src, local->loc.name);
|
||||
|
||||
- if (strcmp(src, dst) > 0) {
|
||||
- local->current = &local->lock[1];
|
||||
- *loc = &local->loc2;
|
||||
- *subvol = local->dst_hashed;
|
||||
- } else {
|
||||
+ if (local->loc2.pargfid)
|
||||
+ uuid_utoa_r (local->loc2.pargfid, dst);
|
||||
+ else if (local->loc2.parent)
|
||||
+ uuid_utoa_r (local->loc2.parent->gfid, dst);
|
||||
+
|
||||
+ strcat (dst, local->loc2.name);
|
||||
+ ret = strcmp (src, dst);
|
||||
+ }
|
||||
+
|
||||
+ if (ret <= 0) {
|
||||
+ /*inodelk in dictionary order of hashed subvol names*/
|
||||
+ /*entrylk in dictionary order of gfid/basename */
|
||||
local->current = &local->lock[0];
|
||||
*loc = &local->loc;
|
||||
*subvol = local->src_hashed;
|
||||
+
|
||||
+ } else {
|
||||
+ local->current = &local->lock[1];
|
||||
+ *loc = &local->loc2;
|
||||
+ *subvol = local->dst_hashed;
|
||||
}
|
||||
|
||||
return;
|
||||
--
|
||||
1.8.3.1
|
||||
|
@ -0,0 +1,39 @@
|
||||
From 0b61a3b9c948a55da0df51a64483dcb8bc3954ba Mon Sep 17 00:00:00 2001
|
||||
From: moagrawa <moagrawa@redhat.com>
|
||||
Date: Mon, 23 Apr 2018 15:12:19 +0530
|
||||
Subject: [PATCH 238/260] quota: Build is failed due to access rpc->refcount in
|
||||
wrong way
|
||||
|
||||
Problem: Build is failed on centos due to access rpc-refcount
|
||||
in wrong way in quota.c
|
||||
|
||||
Solution: Update quota.c to access rpc->refcount
|
||||
|
||||
BUG: 1570582
|
||||
Change-Id: I881617259f73a7b1430e0ea80adf11168356d41e
|
||||
Signed-off-by: moagrawa <moagrawa@redhat.com>
|
||||
Reviewed-on: https://code.engineering.redhat.com/gerrit/136505
|
||||
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
||||
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
|
||||
---
|
||||
xlators/features/quota/src/quota.c | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/xlators/features/quota/src/quota.c b/xlators/features/quota/src/quota.c
|
||||
index c4817bc..3d68ffa 100644
|
||||
--- a/xlators/features/quota/src/quota.c
|
||||
+++ b/xlators/features/quota/src/quota.c
|
||||
@@ -5259,7 +5259,9 @@ fini (xlator_t *this)
|
||||
priv->rpc_clnt = NULL;
|
||||
this->private = NULL;
|
||||
if (rpc) {
|
||||
- cnt = GF_ATOMIC_GET (rpc->refcount);
|
||||
+ pthread_mutex_lock (&rpc->lock);
|
||||
+ cnt = rpc->refcount;
|
||||
+ pthread_mutex_unlock (&rpc->lock);
|
||||
for (i = 0; i < cnt; i++)
|
||||
rpc_clnt_unref (rpc);
|
||||
}
|
||||
--
|
||||
1.8.3.1
|
||||
|
54
0239-geo-rep-Fix-syncing-of-symlink.patch
Normal file
54
0239-geo-rep-Fix-syncing-of-symlink.patch
Normal file
@ -0,0 +1,54 @@
|
||||
From 80087936cf49a08848ee054179e4044ef42cd29e Mon Sep 17 00:00:00 2001
|
||||
From: Kotresh HR <khiremat@redhat.com>
|
||||
Date: Fri, 13 Apr 2018 10:52:14 -0400
|
||||
Subject: [PATCH 239/260] geo-rep: Fix syncing of symlink
|
||||
|
||||
Problem:
|
||||
If symlink is created on master pointing
|
||||
to current directory (e.g symlink -> ".") with
|
||||
non root uid or gid, geo-rep worker crashes
|
||||
with ENOTSUP.
|
||||
|
||||
Cause:
|
||||
Geo-rep creates the symlink on slave and
|
||||
fixes the uid and gid using chown cmd.
|
||||
os.chown dereferences the symlink which is
|
||||
pointing to ".gfid" which is not supported.
|
||||
Note that geo-rep operates on aux-gfid-mount
|
||||
(e.g. "/mnt/.gfid/<gfid-of-symlink-file>").
|
||||
|
||||
Solution:
|
||||
The uid or gid change is acutally on symlink
|
||||
file. So use os.lchown, i.e, don't deference.
|
||||
|
||||
Upstream Reference
|
||||
> BUG: 1567209
|
||||
> Change-Id: I63575fc589d71f987bef1d350c030987738c78ad
|
||||
> Patch: https://review.gluster.org/19872
|
||||
|
||||
BUG: 1565399
|
||||
Change-Id: Ib4613719ac735a4e2856bc0655351f69f2467dac
|
||||
Signed-off-by: Kotresh HR <khiremat@redhat.com>
|
||||
Reviewed-on: https://code.engineering.redhat.com/gerrit/136820
|
||||
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
||||
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
|
||||
---
|
||||
geo-replication/syncdaemon/resource.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/geo-replication/syncdaemon/resource.py b/geo-replication/syncdaemon/resource.py
|
||||
index 4b2a266..d6618c1 100644
|
||||
--- a/geo-replication/syncdaemon/resource.py
|
||||
+++ b/geo-replication/syncdaemon/resource.py
|
||||
@@ -868,7 +868,7 @@ class Server(object):
|
||||
# UID:0 and GID:0, and then call chown to set UID/GID
|
||||
if uid != 0 or gid != 0:
|
||||
path = os.path.join(pfx, gfid)
|
||||
- cmd_ret = errno_wrap(os.chown, [path, uid, gid], [ENOENT],
|
||||
+ cmd_ret = errno_wrap(os.lchown, [path, uid, gid], [ENOENT],
|
||||
[ESTALE, EINVAL])
|
||||
collect_failure(e, cmd_ret)
|
||||
|
||||
--
|
||||
1.8.3.1
|
||||
|
@ -0,0 +1,72 @@
|
||||
From 73b0dc833716484cba04b46fe0d645975dba44db Mon Sep 17 00:00:00 2001
|
||||
From: Mohammed Rafi KC <rkavunga@redhat.com>
|
||||
Date: Mon, 26 Mar 2018 20:27:34 +0530
|
||||
Subject: [PATCH 240/260] shared storage: Prevent mounting shared storage from
|
||||
non-trusted client
|
||||
|
||||
gluster shared storage is a volume used for internal storage for
|
||||
various features including ganesha, geo-rep, snapshot.
|
||||
|
||||
So this volume should not be exposed to the client, as it is
|
||||
a special volume for internal use.
|
||||
|
||||
This fix wont't generate non trusted volfile for shared storage volume.
|
||||
|
||||
backport of https://review.gluster.org/#/c/19920/
|
||||
|
||||
>Change-Id: I8ffe30ae99ec05196d75466210b84db311611a4c
|
||||
>updates: bz#1570432
|
||||
>Signed-off-by: Mohammed Rafi KC <rkavunga@redhat.com>
|
||||
|
||||
Change-Id: Ic540b983bcc53a783fda7ca7a283a9ab48d9eeb7
|
||||
BUG: 1568969
|
||||
Signed-off-by: Mohammed Rafi KC <rkavunga@redhat.com>
|
||||
Reviewed-on: https://code.engineering.redhat.com/gerrit/136708
|
||||
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
||||
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
|
||||
---
|
||||
xlators/mgmt/glusterd/src/glusterd-volgen.c | 21 +++++++++++++++++++++
|
||||
1 file changed, 21 insertions(+)
|
||||
|
||||
diff --git a/xlators/mgmt/glusterd/src/glusterd-volgen.c b/xlators/mgmt/glusterd/src/glusterd-volgen.c
|
||||
index 0e287b6..1c43f24 100644
|
||||
--- a/xlators/mgmt/glusterd/src/glusterd-volgen.c
|
||||
+++ b/xlators/mgmt/glusterd/src/glusterd-volgen.c
|
||||
@@ -5828,6 +5828,7 @@ generate_client_volfiles (glusterd_volinfo_t *volinfo,
|
||||
int i = 0;
|
||||
int ret = -1;
|
||||
char filepath[PATH_MAX] = {0,};
|
||||
+ char *volname = NULL;
|
||||
char *types[] = {NULL, NULL, NULL};
|
||||
dict_t *dict = NULL;
|
||||
xlator_t *this = NULL;
|
||||
@@ -5835,6 +5836,26 @@ generate_client_volfiles (glusterd_volinfo_t *volinfo,
|
||||
|
||||
this = THIS;
|
||||
|
||||
+ volname = volinfo->is_snap_volume ?
|
||||
+ volinfo->parent_volname : volinfo->volname;
|
||||
+
|
||||
+
|
||||
+ if (volname && !strcmp (volname, GLUSTER_SHARED_STORAGE) &&
|
||||
+ client_type != GF_CLIENT_TRUSTED) {
|
||||
+ /*
|
||||
+ * shared storage volume cannot be mounted from non trusted
|
||||
+ * nodes. So we are not creating volfiles for non-trusted
|
||||
+ * clients for shared volumes as well as snapshot of shared
|
||||
+ * volumes.
|
||||
+ */
|
||||
+
|
||||
+ ret = 0;
|
||||
+ gf_msg_debug ("glusterd", 0, "Skipping the non-trusted volfile"
|
||||
+ "creation for shared storage volume. Volume %s",
|
||||
+ volname);
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
enumerate_transport_reqs (volinfo->transport_type, types);
|
||||
dict = dict_new ();
|
||||
if (!dict)
|
||||
--
|
||||
1.8.3.1
|
||||
|
283
0241-server-auth-add-option-for-strict-authentication.patch
Normal file
283
0241-server-auth-add-option-for-strict-authentication.patch
Normal file
@ -0,0 +1,283 @@
|
||||
From bceb9586b96cbf3e0f1747affa6f56cfe29ac140 Mon Sep 17 00:00:00 2001
|
||||
From: Mohammed Rafi KC <rkavunga@redhat.com>
|
||||
Date: Mon, 2 Apr 2018 12:20:47 +0530
|
||||
Subject: [PATCH 241/260] server/auth: add option for strict authentication
|
||||
|
||||
When this option is enabled, we will check for a matching
|
||||
username and password, if not found then the connection will
|
||||
be rejected. This also does a checksum validation of volfile
|
||||
|
||||
The option is invalid when SSL/TLS is in use, at which point
|
||||
the SSL/TLS certificate user name is used to validate and
|
||||
hence authorize the right user. This expects TLS allow rules
|
||||
to be setup correctly rather than the default *.
|
||||
|
||||
This option is not settable, as a result this cannot be enabled
|
||||
for volumes using the CLI. This is used with the shared storage
|
||||
volume, to restrict access to the same in non-SSL/TLS environments
|
||||
to the gluster peers only.
|
||||
|
||||
Tested:
|
||||
./tests/bugs/protocol/bug-1321578.t
|
||||
./tests/features/ssl-authz.t
|
||||
- Ran tests on volumes with and without strict auth
|
||||
checking (as brick vol file needed to be edited to test,
|
||||
or rather to enable the option)
|
||||
- Ran tests on volumes to ensure existing mounts are
|
||||
disconnected when we enable strict checking
|
||||
|
||||
backport of upstream https://review.gluster.org/#/c/19921/
|
||||
|
||||
>Change-Id: I2ac4f0cfa5b59cc789cc5a265358389b04556b59
|
||||
>fixes: bz#1570432
|
||||
>Signed-off-by: Mohammed Rafi KC <rkavunga@redhat.com>
|
||||
>Signed-off-by: ShyamsundarR <srangana@redhat.com>
|
||||
|
||||
Change-Id: I7fd3194b91ba22d57b851a2a042ff16b9a616a5a
|
||||
BUG: 1568969
|
||||
Signed-off-by: Mohammed Rafi KC <rkavunga@redhat.com>
|
||||
Reviewed-on: https://code.engineering.redhat.com/gerrit/136709
|
||||
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
||||
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
|
||||
---
|
||||
xlators/mgmt/glusterd/src/glusterd-volgen.c | 16 +++++++-
|
||||
xlators/protocol/auth/login/src/login.c | 51 ++++++++++++++++++++++----
|
||||
xlators/protocol/server/src/authenticate.h | 4 +-
|
||||
xlators/protocol/server/src/server-handshake.c | 2 +-
|
||||
xlators/protocol/server/src/server.c | 18 +++++++++
|
||||
xlators/protocol/server/src/server.h | 2 +
|
||||
6 files changed, 81 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/xlators/mgmt/glusterd/src/glusterd-volgen.c b/xlators/mgmt/glusterd/src/glusterd-volgen.c
|
||||
index 1c43f24..3926bd3 100644
|
||||
--- a/xlators/mgmt/glusterd/src/glusterd-volgen.c
|
||||
+++ b/xlators/mgmt/glusterd/src/glusterd-volgen.c
|
||||
@@ -2341,6 +2341,7 @@ brick_graph_add_server (volgen_graph_t *graph, glusterd_volinfo_t *volinfo,
|
||||
char *password = NULL;
|
||||
char key[1024] = {0};
|
||||
char *ssl_user = NULL;
|
||||
+ char *volname = NULL;
|
||||
char *address_family_data = NULL;
|
||||
|
||||
if (!graph || !volinfo || !set_dict || !brickinfo)
|
||||
@@ -2416,6 +2417,19 @@ brick_graph_add_server (volgen_graph_t *graph, glusterd_volinfo_t *volinfo,
|
||||
if (ret)
|
||||
return -1;
|
||||
|
||||
+ volname = volinfo->is_snap_volume ?
|
||||
+ volinfo->parent_volname : volinfo->volname;
|
||||
+
|
||||
+
|
||||
+ if (volname && !strcmp (volname, GLUSTER_SHARED_STORAGE)) {
|
||||
+ memset (key, 0, sizeof (key));
|
||||
+ snprintf (key, sizeof (key), "strict-auth-accept");
|
||||
+
|
||||
+ ret = xlator_set_option (xl, key, "true");
|
||||
+ if (ret)
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
if (dict_get_str (volinfo->dict, "auth.ssl-allow", &ssl_user) == 0) {
|
||||
memset (key, 0, sizeof (key));
|
||||
snprintf (key, sizeof (key), "auth.login.%s.ssl-allow",
|
||||
@@ -5841,7 +5855,7 @@ generate_client_volfiles (glusterd_volinfo_t *volinfo,
|
||||
|
||||
|
||||
if (volname && !strcmp (volname, GLUSTER_SHARED_STORAGE) &&
|
||||
- client_type != GF_CLIENT_TRUSTED) {
|
||||
+ client_type != GF_CLIENT_TRUSTED) {
|
||||
/*
|
||||
* shared storage volume cannot be mounted from non trusted
|
||||
* nodes. So we are not creating volfiles for non-trusted
|
||||
diff --git a/xlators/protocol/auth/login/src/login.c b/xlators/protocol/auth/login/src/login.c
|
||||
index e799dd2..da10d0b 100644
|
||||
--- a/xlators/protocol/auth/login/src/login.c
|
||||
+++ b/xlators/protocol/auth/login/src/login.c
|
||||
@@ -11,6 +11,16 @@
|
||||
#include <fnmatch.h>
|
||||
#include "authenticate.h"
|
||||
|
||||
+/* Note on strict_auth
|
||||
+ * - Strict auth kicks in when authentication is using the username, password
|
||||
+ * in the volfile to login
|
||||
+ * - If enabled, auth is rejected if the username and password is not matched
|
||||
+ * or is not present
|
||||
+ * - When using SSL names, this is automatically strict, and allows only those
|
||||
+ * names that are present in the allow list, IOW strict auth checking has no
|
||||
+ * implication when using SSL names
|
||||
+*/
|
||||
+
|
||||
auth_result_t gf_auth (dict_t *input_params, dict_t *config_params)
|
||||
{
|
||||
auth_result_t result = AUTH_DONT_CARE;
|
||||
@@ -27,6 +37,7 @@ auth_result_t gf_auth (dict_t *input_params, dict_t *config_params)
|
||||
char *tmp = NULL;
|
||||
char *username_cpy = NULL;
|
||||
gf_boolean_t using_ssl = _gf_false;
|
||||
+ gf_boolean_t strict_auth = _gf_false;
|
||||
|
||||
username_data = dict_get (input_params, "ssl-name");
|
||||
if (username_data) {
|
||||
@@ -35,16 +46,39 @@ auth_result_t gf_auth (dict_t *input_params, dict_t *config_params)
|
||||
using_ssl = _gf_true;
|
||||
}
|
||||
else {
|
||||
+ ret = dict_get_str_boolean (config_params, "strict-auth-accept",
|
||||
+ _gf_false);
|
||||
+ if (ret == -1)
|
||||
+ strict_auth = _gf_false;
|
||||
+ else
|
||||
+ strict_auth = ret;
|
||||
+
|
||||
username_data = dict_get (input_params, "username");
|
||||
if (!username_data) {
|
||||
- gf_log ("auth/login", GF_LOG_DEBUG,
|
||||
- "username not found, returning DONT-CARE");
|
||||
+ if (strict_auth) {
|
||||
+ gf_log ("auth/login", GF_LOG_DEBUG,
|
||||
+ "username not found, strict auth"
|
||||
+ " configured returning REJECT");
|
||||
+ result = AUTH_REJECT;
|
||||
+ } else {
|
||||
+ gf_log ("auth/login", GF_LOG_DEBUG,
|
||||
+ "username not found, returning"
|
||||
+ " DONT-CARE");
|
||||
+ }
|
||||
goto out;
|
||||
}
|
||||
password_data = dict_get (input_params, "password");
|
||||
if (!password_data) {
|
||||
- gf_log ("auth/login", GF_LOG_WARNING,
|
||||
- "password not found, returning DONT-CARE");
|
||||
+ if (strict_auth) {
|
||||
+ gf_log ("auth/login", GF_LOG_DEBUG,
|
||||
+ "password not found, strict auth"
|
||||
+ " configured returning REJECT");
|
||||
+ result = AUTH_REJECT;
|
||||
+ } else {
|
||||
+ gf_log ("auth/login", GF_LOG_WARNING,
|
||||
+ "password not found, returning"
|
||||
+ " DONT-CARE");
|
||||
+ }
|
||||
goto out;
|
||||
}
|
||||
password = data_to_str (password_data);
|
||||
@@ -62,9 +96,10 @@ auth_result_t gf_auth (dict_t *input_params, dict_t *config_params)
|
||||
ret = gf_asprintf (&searchstr, "auth.login.%s.%s", brick_name,
|
||||
using_ssl ? "ssl-allow" : "allow");
|
||||
if (-1 == ret) {
|
||||
- gf_log ("auth/login", GF_LOG_WARNING,
|
||||
+ gf_log ("auth/login", GF_LOG_ERROR,
|
||||
"asprintf failed while setting search string, "
|
||||
- "returning DONT-CARE");
|
||||
+ "returning REJECT");
|
||||
+ result = AUTH_REJECT;
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -92,8 +127,10 @@ auth_result_t gf_auth (dict_t *input_params, dict_t *config_params)
|
||||
* ssl-allow=* case as well) authorization is effectively
|
||||
* disabled, though authentication and encryption are still
|
||||
* active.
|
||||
+ *
|
||||
+ * Read NOTE on strict_auth above.
|
||||
*/
|
||||
- if (using_ssl) {
|
||||
+ if (using_ssl || strict_auth) {
|
||||
result = AUTH_REJECT;
|
||||
}
|
||||
username_cpy = gf_strdup (allow_user->data);
|
||||
diff --git a/xlators/protocol/server/src/authenticate.h b/xlators/protocol/server/src/authenticate.h
|
||||
index 3f80231..5f92183 100644
|
||||
--- a/xlators/protocol/server/src/authenticate.h
|
||||
+++ b/xlators/protocol/server/src/authenticate.h
|
||||
@@ -37,10 +37,8 @@ typedef struct {
|
||||
volume_opt_list_t *vol_opt;
|
||||
} auth_handle_t;
|
||||
|
||||
-auth_result_t gf_authenticate (dict_t *input_params,
|
||||
- dict_t *config_params,
|
||||
- dict_t *auth_modules);
|
||||
int32_t gf_auth_init (xlator_t *xl, dict_t *auth_modules);
|
||||
void gf_auth_fini (dict_t *auth_modules);
|
||||
+auth_result_t gf_authenticate (dict_t *, dict_t *, dict_t *);
|
||||
|
||||
#endif /* _AUTHENTICATE_H */
|
||||
diff --git a/xlators/protocol/server/src/server-handshake.c b/xlators/protocol/server/src/server-handshake.c
|
||||
index cbc93a3..fc63f2c 100644
|
||||
--- a/xlators/protocol/server/src/server-handshake.c
|
||||
+++ b/xlators/protocol/server/src/server-handshake.c
|
||||
@@ -747,7 +747,7 @@ server_setvolume (rpcsvc_request_t *req)
|
||||
ret = dict_get_str (params, "volfile-key",
|
||||
&volfile_key);
|
||||
if (ret)
|
||||
- gf_msg_debug (this->name, 0, "failed to set "
|
||||
+ gf_msg_debug (this->name, 0, "failed to get "
|
||||
"'volfile-key'");
|
||||
|
||||
ret = _validate_volfile_checksum (this, volfile_key,
|
||||
diff --git a/xlators/protocol/server/src/server.c b/xlators/protocol/server/src/server.c
|
||||
index eed4295..6f20a06 100644
|
||||
--- a/xlators/protocol/server/src/server.c
|
||||
+++ b/xlators/protocol/server/src/server.c
|
||||
@@ -943,6 +943,10 @@ do_rpc:
|
||||
goto out;
|
||||
}
|
||||
|
||||
+ GF_OPTION_RECONF ("strict-auth-accept", conf->strict_auth_enabled,
|
||||
+ options, bool, out);
|
||||
+
|
||||
+
|
||||
GF_OPTION_RECONF ("dynamic-auth", conf->dync_auth, options,
|
||||
bool, out);
|
||||
|
||||
@@ -1183,6 +1187,14 @@ init (xlator_t *this)
|
||||
"Failed to initialize group cache.");
|
||||
goto out;
|
||||
}
|
||||
+
|
||||
+ ret = dict_get_str_boolean (this->options, "strict-auth-accept",
|
||||
+ _gf_false);
|
||||
+ if (ret == -1)
|
||||
+ conf->strict_auth_enabled = _gf_false;
|
||||
+ else
|
||||
+ conf->strict_auth_enabled = ret;
|
||||
+
|
||||
ret = dict_get_str_boolean (this->options, "dynamic-auth",
|
||||
_gf_true);
|
||||
if (ret == -1)
|
||||
@@ -1840,5 +1852,11 @@ struct volume_options options[] = {
|
||||
"transport connection immediately in response to "
|
||||
"*.allow | *.reject volume set options."
|
||||
},
|
||||
+ { .key = {"strict-auth-accept"},
|
||||
+ .type = GF_OPTION_TYPE_BOOL,
|
||||
+ .default_value = "off",
|
||||
+ .description = "strict-auth-accept reject connection with out"
|
||||
+ "a valid username and password."
|
||||
+ },
|
||||
{ .key = {NULL} },
|
||||
};
|
||||
diff --git a/xlators/protocol/server/src/server.h b/xlators/protocol/server/src/server.h
|
||||
index af987aa..691c75b 100644
|
||||
--- a/xlators/protocol/server/src/server.h
|
||||
+++ b/xlators/protocol/server/src/server.h
|
||||
@@ -24,6 +24,7 @@
|
||||
#include "client_t.h"
|
||||
#include "gidcache.h"
|
||||
#include "defaults.h"
|
||||
+#include "authenticate.h"
|
||||
|
||||
#define DEFAULT_BLOCK_SIZE 4194304 /* 4MB */
|
||||
#define DEFAULT_VOLUME_FILE_PATH CONFDIR "/glusterfs.vol"
|
||||
@@ -109,6 +110,7 @@ struct server_conf {
|
||||
* tweeked */
|
||||
struct _child_status *child_status;
|
||||
gf_lock_t itable_lock;
|
||||
+ gf_boolean_t strict_auth_enabled;
|
||||
};
|
||||
typedef struct server_conf server_conf_t;
|
||||
|
||||
--
|
||||
1.8.3.1
|
||||
|
31
0242-feature-changelog-remove-unused-variable.patch
Normal file
31
0242-feature-changelog-remove-unused-variable.patch
Normal file
@ -0,0 +1,31 @@
|
||||
From 05942267fc5d33be457cf07f95d9dae2341e1050 Mon Sep 17 00:00:00 2001
|
||||
From: Sunil Kumar Acharya <sheggodu@redhat.com>
|
||||
Date: Wed, 25 Apr 2018 14:56:55 +0530
|
||||
Subject: [PATCH 242/260] feature/changelog: remove unused variable
|
||||
|
||||
Fix removes unsed variable in notify().
|
||||
|
||||
BUG: 1571645
|
||||
Change-Id: I60fb61ae4ed3e80e2ecf93935477db0fcb2cd156
|
||||
Signed-off-by: Sunil Kumar Acharya <sheggodu@redhat.com>
|
||||
Reviewed-on: https://code.engineering.redhat.com/gerrit/136830
|
||||
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
||||
---
|
||||
xlators/features/changelog/src/changelog.c | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/xlators/features/changelog/src/changelog.c b/xlators/features/changelog/src/changelog.c
|
||||
index 121ab04..7e36172 100644
|
||||
--- a/xlators/features/changelog/src/changelog.c
|
||||
+++ b/xlators/features/changelog/src/changelog.c
|
||||
@@ -2102,7 +2102,6 @@ notify (xlator_t *this, int event, void *data, ...)
|
||||
int ret = 0;
|
||||
int ret1 = 0;
|
||||
struct list_head queue = {0, };
|
||||
- int i = 0;
|
||||
|
||||
INIT_LIST_HEAD (&queue);
|
||||
|
||||
--
|
||||
1.8.3.1
|
||||
|
86
0243-timer-Fix-possible-race-during-cleanup.patch
Normal file
86
0243-timer-Fix-possible-race-during-cleanup.patch
Normal file
@ -0,0 +1,86 @@
|
||||
From 4623ebe9a69a5284565b4ad253084a1236478988 Mon Sep 17 00:00:00 2001
|
||||
From: Soumya Koduri <skoduri@redhat.com>
|
||||
Date: Fri, 3 Nov 2017 15:41:34 +0530
|
||||
Subject: [PATCH 243/260] timer: Fix possible race during cleanup
|
||||
|
||||
As mentioned in bug1509189, there is a possible race
|
||||
between gf_timer_cancel(), gf_timer_proc() and
|
||||
gf_timer_registry_destroy() leading to use_after_free.
|
||||
|
||||
Problem:
|
||||
|
||||
1) gf_timer_proc() is called, locks reg, and gets an event.
|
||||
It unlocks reg, and calls the callback.
|
||||
|
||||
2) Meanwhile gf_timer_registry_destroy() is called, and removes
|
||||
reg from ctx, and joins on gf_timer_proc().
|
||||
|
||||
3) gf_timer_call_cancel() is called on the event being
|
||||
processed. It cannot find reg (since it's been removed from reg),
|
||||
so it frees event.
|
||||
|
||||
4) the callback returns into gf_timer_proc(), and it tries to free
|
||||
event, but it's already free, so double free.
|
||||
|
||||
Solution:
|
||||
The fix is to bail out in gf_timer_cancel() when registry
|
||||
is not found. The logic behind this is that, gf_timer_cancel()
|
||||
is called only on any existing event. That means there was a valid
|
||||
registry earlier while creating that event. And the only reason
|
||||
we cannot find that registry now is that it must have got set to
|
||||
NULL when context cleanup is started.
|
||||
Since gf_timer_proc() takes care of releasing all the remaining
|
||||
events active on that registry, it seems safe to bail out
|
||||
in gf_timer_cancel().
|
||||
|
||||
>Change-Id: Ia9b088533141c3bb335eff2fe06b52d1575bb34f
|
||||
>BUG: 1509189
|
||||
>Reported-by: Daniel Gryniewicz <dang@redhat.com>
|
||||
>Signed-off-by: Soumya Koduri <skoduri@redhat.com>
|
||||
Upstream Link: https://review.gluster.org/#/c/18652/
|
||||
|
||||
BUG: 1568374
|
||||
Change-Id: Ia9b088533141c3bb335eff2fe06b52d1575bb34f
|
||||
Signed-off-by: Sunil Kumar Acharya <sheggodu@redhat.com>
|
||||
Reviewed-on: https://code.engineering.redhat.com/gerrit/135896
|
||||
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
||||
---
|
||||
libglusterfs/src/timer.c | 15 ++++++++++++---
|
||||
1 file changed, 12 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/libglusterfs/src/timer.c b/libglusterfs/src/timer.c
|
||||
index 34dfd35..d6f008d 100644
|
||||
--- a/libglusterfs/src/timer.c
|
||||
+++ b/libglusterfs/src/timer.c
|
||||
@@ -83,6 +83,13 @@ gf_timer_call_cancel (glusterfs_ctx_t *ctx,
|
||||
return 0;
|
||||
}
|
||||
|
||||
+ if (ctx->cleanup_started) {
|
||||
+ gf_msg_callingfn ("timer", GF_LOG_INFO, 0,
|
||||
+ LG_MSG_CTX_CLEANUP_STARTED,
|
||||
+ "ctx cleanup started");
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
LOCK (&ctx->lock);
|
||||
{
|
||||
reg = ctx->timer;
|
||||
@@ -90,9 +97,11 @@ gf_timer_call_cancel (glusterfs_ctx_t *ctx,
|
||||
UNLOCK (&ctx->lock);
|
||||
|
||||
if (!reg) {
|
||||
- gf_msg ("timer", GF_LOG_ERROR, 0, LG_MSG_INIT_TIMER_FAILED,
|
||||
- "!reg");
|
||||
- GF_FREE (event);
|
||||
+ /* This can happen when cleanup may have just started and
|
||||
+ * gf_timer_registry_destroy() sets ctx->timer to NULL.
|
||||
+ * Just bail out as success as gf_timer_proc() takes
|
||||
+ * care of cleaning up the events.
|
||||
+ */
|
||||
return 0;
|
||||
}
|
||||
|
||||
--
|
||||
1.8.3.1
|
||||
|
@ -0,0 +1,93 @@
|
||||
From 9a458a8a0bdd88ff44f80b6b5a4c5fbaa970500f Mon Sep 17 00:00:00 2001
|
||||
From: Soumya Koduri <skoduri@redhat.com>
|
||||
Date: Thu, 19 Jan 2017 15:01:12 +0530
|
||||
Subject: [PATCH 244/260] common-ha: All statd related files need to be owned
|
||||
by rpcuser
|
||||
|
||||
Statd service is started as rpcuser by default. Hence the
|
||||
files/directories needed by it under '/var/lib/nfs' should be
|
||||
owned by the same user.
|
||||
|
||||
Note: This change is not in mainline as the cluster-bits
|
||||
are being moved to storehaug project -
|
||||
http://review.gluster.org/#/c/16349/
|
||||
http://review.gluster.org/#/c/16333/
|
||||
|
||||
Label: BACKPORT FROM UPSTREAM 3.10
|
||||
|
||||
Upstream Reference :
|
||||
> Change-Id: I89fd06aa9700c5ce60026ac825da7c154d9f48fd
|
||||
> BUG: 1414665
|
||||
> Signed-off-by: Soumya Koduri <skoduri@redhat.com>
|
||||
> Reviewed-on: http://review.gluster.org/16433
|
||||
> Reviewed-by: jiffin tony Thottan <jthottan@redhat.com>
|
||||
> Smoke: Gluster Build System <jenkins@build.gluster.org>
|
||||
> Tested-by: Kaleb KEITHLEY <kkeithle@redhat.com>
|
||||
> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
|
||||
> CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
|
||||
|
||||
Change-Id: I89fd06aa9700c5ce60026ac825da7c154d9f48fd
|
||||
BUG: 1565015
|
||||
Signed-off-by: Jiffin Tony Thottan <jthottan@redhat.com>
|
||||
Reviewed-on: https://code.engineering.redhat.com/gerrit/137254
|
||||
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
||||
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
|
||||
---
|
||||
extras/ganesha/scripts/ganesha-ha.sh | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
diff --git a/extras/ganesha/scripts/ganesha-ha.sh b/extras/ganesha/scripts/ganesha-ha.sh
|
||||
index 4459068..5cdafad 100644
|
||||
--- a/extras/ganesha/scripts/ganesha-ha.sh
|
||||
+++ b/extras/ganesha/scripts/ganesha-ha.sh
|
||||
@@ -756,9 +756,11 @@ setup_state_volume()
|
||||
fi
|
||||
if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/statd ]; then
|
||||
mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/statd
|
||||
+ chown rpcuser:rpcuser ${mnt}/nfs-ganesha/${dirname}/nfs/statd
|
||||
fi
|
||||
if [ ! -e ${mnt}/nfs-ganesha/${dirname}/nfs/state ]; then
|
||||
touch ${mnt}/nfs-ganesha/${dirname}/nfs/state
|
||||
+ chown rpcuser:rpcuser ${mnt}/nfs-ganesha/${dirname}/nfs/state
|
||||
fi
|
||||
if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha/v4recov ]; then
|
||||
mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha/v4recov
|
||||
@@ -768,9 +770,11 @@ setup_state_volume()
|
||||
fi
|
||||
if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/statd/sm ]; then
|
||||
mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/statd/sm
|
||||
+ chown rpcuser:rpcuser ${mnt}/nfs-ganesha/${dirname}/nfs/statd/sm
|
||||
fi
|
||||
if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/statd/sm.bak ]; then
|
||||
mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/statd/sm.bak
|
||||
+ chown rpcuser:rpcuser ${mnt}/nfs-ganesha/${dirname}/nfs/statd/sm.bak
|
||||
fi
|
||||
if [ ! -e ${mnt}/nfs-ganesha/${dirname}/nfs/statd/state ]; then
|
||||
touch ${mnt}/nfs-ganesha/${dirname}/nfs/statd/state
|
||||
@@ -830,9 +834,11 @@ addnode_state_volume()
|
||||
fi
|
||||
if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/statd ]; then
|
||||
mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/statd
|
||||
+ chown rpcuser:rpcuser ${mnt}/nfs-ganesha/${dirname}/nfs/statd
|
||||
fi
|
||||
if [ ! -e ${mnt}/nfs-ganesha/${dirname}/nfs/state ]; then
|
||||
touch ${mnt}/nfs-ganesha/${dirname}/nfs/state
|
||||
+ chown rpcuser:rpcuser ${mnt}/nfs-ganesha/${dirname}/nfs/state
|
||||
fi
|
||||
if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha/v4recov ]; then
|
||||
mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha/v4recov
|
||||
@@ -842,9 +848,11 @@ addnode_state_volume()
|
||||
fi
|
||||
if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/statd/sm ]; then
|
||||
mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/statd/sm
|
||||
+ chown rpcuser:rpcuser ${mnt}/nfs-ganesha/${dirname}/nfs/statd/sm
|
||||
fi
|
||||
if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/statd/sm.bak ]; then
|
||||
mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/statd/sm.bak
|
||||
+ chown rpcuser:rpcuser ${mnt}/nfs-ganesha/${dirname}/nfs/statd/sm.bak
|
||||
fi
|
||||
if [ ! -e ${mnt}/nfs-ganesha/${dirname}/nfs/statd/state ]; then
|
||||
touch ${mnt}/nfs-ganesha/${dirname}/nfs/statd/state
|
||||
--
|
||||
1.8.3.1
|
||||
|
56
0245-build-make-RHGS-version-available-for-server.patch
Normal file
56
0245-build-make-RHGS-version-available-for-server.patch
Normal file
@ -0,0 +1,56 @@
|
||||
From 01b371af8dc6f95c00facd5215ab4c939a86f1db Mon Sep 17 00:00:00 2001
|
||||
From: Milind Changire <mchangir@redhat.com>
|
||||
Date: Mon, 23 Apr 2018 13:16:30 +0530
|
||||
Subject: [PATCH 245/260] build: make RHGS version available for server
|
||||
|
||||
Make /usr/share/glusterfs/release available for gluserfs-server package.
|
||||
This file contains the RHGS release number for the release.
|
||||
|
||||
Label: DOWNSTREAM ONLY
|
||||
|
||||
Change-Id: I7485f77cfb8ca7f0f8363a20124900ae9ae8a528
|
||||
BUG: 1570514
|
||||
Signed-off-by: Milind Changire <mchangir@redhat.com>
|
||||
Reviewed-on: https://code.engineering.redhat.com/gerrit/137139
|
||||
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
||||
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
|
||||
---
|
||||
glusterfs.spec.in | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
diff --git a/glusterfs.spec.in b/glusterfs.spec.in
|
||||
index 64e7e29..36b465a 100644
|
||||
--- a/glusterfs.spec.in
|
||||
+++ b/glusterfs.spec.in
|
||||
@@ -865,6 +865,10 @@ find ./tests ./run-tests.sh -type f | cpio -pd %{buildroot}%{_prefix}/share/glus
|
||||
install -p -m 0744 -D extras/command-completion/gluster.bash \
|
||||
%{buildroot}%{_sysconfdir}/bash_completion.d/gluster
|
||||
|
||||
+%if ( 0%{?_build_server} )
|
||||
+echo "RHGS 3.4.0" > %{buildroot}%{_datadir}/glusterfs/release
|
||||
+%endif
|
||||
+
|
||||
%clean
|
||||
rm -rf %{buildroot}
|
||||
|
||||
@@ -1566,6 +1570,7 @@ exit 0
|
||||
|
||||
# Extra utility script
|
||||
%dir %{_libexecdir}/glusterfs
|
||||
+ %{_datadir}/glusterfs/release
|
||||
%dir %{_datadir}/glusterfs/scripts
|
||||
%{_datadir}/glusterfs/scripts/stop-all-gluster-processes.sh
|
||||
%if ( 0%{?_with_systemd:1} )
|
||||
@@ -2155,6 +2160,9 @@ fi
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
+* Mon Apr 23 2018 Milind Changire <mchangir@redhat.com>
|
||||
+- make RHGS release number available in /usr/share/glusterfs/release (#1570514)
|
||||
+
|
||||
* Wed Apr 18 2018 Atin Mukherjee <amukherj@redhat.com>
|
||||
- Revert SELinux hooks (#1565962)
|
||||
|
||||
--
|
||||
1.8.3.1
|
||||
|
45
0246-glusterd-Fix-for-memory-leak-in-get-state-detail.patch
Normal file
45
0246-glusterd-Fix-for-memory-leak-in-get-state-detail.patch
Normal file
@ -0,0 +1,45 @@
|
||||
From 4ff96e11ea80d9a0d9dec2031c9cdd99d2afdc61 Mon Sep 17 00:00:00 2001
|
||||
From: Sanju Rakonde <srakonde@redhat.com>
|
||||
Date: Mon, 30 Apr 2018 11:12:34 +0530
|
||||
Subject: [PATCH 246/260] glusterd: Fix for memory leak in get-state detail
|
||||
|
||||
>Fixes: bz#1573066
|
||||
>Change-Id: I76fe3bdde7351736b32eb3d6c4cc5f8f276257ed
|
||||
>Signed-off-by: Sanju Rakonde <srakonde@redhat.com>
|
||||
|
||||
upstream patch: https://review.gluster.org/#/c/19948/
|
||||
|
||||
BUG: 1567899
|
||||
Change-Id: I76fe3bdde7351736b32eb3d6c4cc5f8f276257ed
|
||||
Signed-off-by: Sanju Rakonde <srakonde@redhat.com>
|
||||
Reviewed-on: https://code.engineering.redhat.com/gerrit/137469
|
||||
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
||||
Reviewed-by: Sunil Kumar Heggodu Gopala Acharya <sheggodu@redhat.com>
|
||||
---
|
||||
xlators/mgmt/glusterd/src/glusterd-handler.c | 9 ++++++++-
|
||||
1 file changed, 8 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/xlators/mgmt/glusterd/src/glusterd-handler.c b/xlators/mgmt/glusterd/src/glusterd-handler.c
|
||||
index 30adb99..962c87e 100644
|
||||
--- a/xlators/mgmt/glusterd/src/glusterd-handler.c
|
||||
+++ b/xlators/mgmt/glusterd/src/glusterd-handler.c
|
||||
@@ -5409,8 +5409,15 @@ out:
|
||||
if (pending_node)
|
||||
GF_FREE (pending_node);
|
||||
|
||||
- if (brick_req)
|
||||
+ if (brick_req) {
|
||||
+ if (brick_req->input.input_val)
|
||||
+ GF_FREE (brick_req->input.input_val);
|
||||
GF_FREE (brick_req);
|
||||
+ }
|
||||
+ if (args.dict)
|
||||
+ dict_unref (args.dict);
|
||||
+ if (args.errstr)
|
||||
+ GF_FREE (args.errstr);
|
||||
|
||||
return ret;
|
||||
}
|
||||
--
|
||||
1.8.3.1
|
||||
|
74
0247-protocol-server-unwind-as-per-op-version.patch
Normal file
74
0247-protocol-server-unwind-as-per-op-version.patch
Normal file
@ -0,0 +1,74 @@
|
||||
From 3c8ff0fceb008dca51cebfc9e808f6268548661a Mon Sep 17 00:00:00 2001
|
||||
From: Ashish Pandey <aspandey@redhat.com>
|
||||
Date: Wed, 25 Apr 2018 16:48:56 +0530
|
||||
Subject: [PATCH 247/260] protocol/server : unwind as per op version
|
||||
|
||||
>Change-Id: Id6717640ac14881b490e512c4682e45ffffa7f5b
|
||||
upstream patch -
|
||||
https://review.gluster.org/#/c/19938/
|
||||
|
||||
Change-Id: I43034c2974108c434bd3e4c553ff416339ece870
|
||||
BUG: 1558948
|
||||
Signed-off-by: Ashish Pandey <aspandey@redhat.com>
|
||||
Reviewed-on: https://code.engineering.redhat.com/gerrit/137625
|
||||
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
||||
Reviewed-by: Sunil Kumar Heggodu Gopala Acharya <sheggodu@redhat.com>
|
||||
---
|
||||
libglusterfs/src/client_t.h | 1 +
|
||||
xlators/features/locks/src/posix.c | 8 +++++++-
|
||||
xlators/protocol/server/src/server-handshake.c | 5 +++--
|
||||
3 files changed, 11 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/libglusterfs/src/client_t.h b/libglusterfs/src/client_t.h
|
||||
index 530c0a3..088508e 100644
|
||||
--- a/libglusterfs/src/client_t.h
|
||||
+++ b/libglusterfs/src/client_t.h
|
||||
@@ -45,6 +45,7 @@ typedef struct _client {
|
||||
char *subdir_mount;
|
||||
inode_t *subdir_inode;
|
||||
uuid_t subdir_gfid;
|
||||
+ int32_t opversion;
|
||||
} client_t;
|
||||
|
||||
#define GF_CLIENTCTX_INITIAL_SIZE 8
|
||||
diff --git a/xlators/features/locks/src/posix.c b/xlators/features/locks/src/posix.c
|
||||
index a158227..ef4bebf 100644
|
||||
--- a/xlators/features/locks/src/posix.c
|
||||
+++ b/xlators/features/locks/src/posix.c
|
||||
@@ -1563,7 +1563,13 @@ int
|
||||
pl_flush_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
||||
int32_t op_ret, int32_t op_errno, dict_t *xdata)
|
||||
{
|
||||
- PL_STACK_UNWIND (flush, xdata, frame, op_ret, op_errno, xdata);
|
||||
+
|
||||
+ if (frame->root->client &&
|
||||
+ (frame->root->client->opversion < GD_OP_VERSION_3_12_0)) {
|
||||
+ STACK_UNWIND_STRICT (flush, frame, op_ret, op_errno, xdata);
|
||||
+ } else {
|
||||
+ PL_STACK_UNWIND (flush, xdata, frame, op_ret, op_errno, xdata);
|
||||
+ }
|
||||
|
||||
return 0;
|
||||
}
|
||||
diff --git a/xlators/protocol/server/src/server-handshake.c b/xlators/protocol/server/src/server-handshake.c
|
||||
index fc63f2c..a59bcda 100644
|
||||
--- a/xlators/protocol/server/src/server-handshake.c
|
||||
+++ b/xlators/protocol/server/src/server-handshake.c
|
||||
@@ -778,11 +778,12 @@ server_setvolume (rpcsvc_request_t *req)
|
||||
}
|
||||
|
||||
ret = dict_get_uint32 (params, "opversion", &opversion);
|
||||
- if (ret)
|
||||
+ if (ret) {
|
||||
gf_msg (this->name, GF_LOG_INFO, 0,
|
||||
PS_MSG_CLIENT_OPVERSION_GET_FAILED,
|
||||
"Failed to get client opversion");
|
||||
-
|
||||
+ }
|
||||
+ client->opversion = opversion;
|
||||
/* Assign op-version value to the client */
|
||||
pthread_mutex_lock (&conf->mutex);
|
||||
list_for_each_entry (xprt, &conf->xprt_list, list) {
|
||||
--
|
||||
1.8.3.1
|
||||
|
1042
0248-performance-md-cache-purge-cache-on-ENOENT-ESTALE-er.patch
Normal file
1042
0248-performance-md-cache-purge-cache-on-ENOENT-ESTALE-er.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,46 @@
|
||||
From 0e9d29c1ae1ba6954299489012ba69466709af0f Mon Sep 17 00:00:00 2001
|
||||
From: Raghavendra G <rgowdapp@redhat.com>
|
||||
Date: Thu, 3 May 2018 09:34:39 +0530
|
||||
Subject: [PATCH 249/260] cluster/dht: unwind if dht_selfheal_dir_mkdir returns
|
||||
an error
|
||||
|
||||
If dht_selfheal_dir_mkdir returns an error, cbk passed to
|
||||
dht_selfheal_directory is not invoked. So, Current codepath leaves an
|
||||
unwound frame resulting in a hung fop forever.
|
||||
|
||||
> Change-Id: I422308b8a34a074301ca46b029ffe676f5e0f66c
|
||||
> fixes: bz#1574305
|
||||
> Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
|
||||
|
||||
upstream patch: https://review.gluster.org/19953/
|
||||
Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
|
||||
|
||||
Change-Id: I3ea6510d936eca6198147704d93580bd733eaeea
|
||||
BUG: 1561999
|
||||
Reviewed-on: https://code.engineering.redhat.com/gerrit/137725
|
||||
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
||||
Reviewed-by: Nithya Balachandran <nbalacha@redhat.com>
|
||||
---
|
||||
xlators/cluster/dht/src/dht-selfheal.c | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/xlators/cluster/dht/src/dht-selfheal.c b/xlators/cluster/dht/src/dht-selfheal.c
|
||||
index 7b192d3..53c59a2 100644
|
||||
--- a/xlators/cluster/dht/src/dht-selfheal.c
|
||||
+++ b/xlators/cluster/dht/src/dht-selfheal.c
|
||||
@@ -2336,7 +2336,11 @@ dht_selfheal_directory (call_frame_t *frame, dht_selfheal_dir_cbk_t dir_cbk,
|
||||
local->heal_layout = _gf_false;
|
||||
}
|
||||
|
||||
- dht_selfheal_dir_mkdir (frame, loc, layout, 0);
|
||||
+ ret = dht_selfheal_dir_mkdir (frame, loc, layout, 0);
|
||||
+ if (ret < 0) {
|
||||
+ ret = 0;
|
||||
+ goto sorry_no_fix;
|
||||
+ }
|
||||
|
||||
return 0;
|
||||
|
||||
--
|
||||
1.8.3.1
|
||||
|
@ -0,0 +1,69 @@
|
||||
From 4eef56dc01a9ab11d56f30dd29e2eb65c82cc01d Mon Sep 17 00:00:00 2001
|
||||
From: Raghavendra G <rgowdapp@redhat.com>
|
||||
Date: Wed, 4 Apr 2018 10:03:18 +0530
|
||||
Subject: [PATCH 250/260] cluster/dht: act as passthrough for renames on single
|
||||
child DHT
|
||||
|
||||
Various synchronization present in dht_rename while handling
|
||||
directories and files is necessary only if we have more than only one
|
||||
child.
|
||||
|
||||
> Change-Id: Ie21ad419125504ca2f391b1ae2e5c1d166fee247
|
||||
> fixes: bz#1563511
|
||||
> Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
|
||||
|
||||
upstream patch: https://review.gluster.org/19817/
|
||||
Change-Id: Ie21ad419125504ca2f391b1ae2e5c1d166fee247
|
||||
BUG: 1572087
|
||||
fixes: bz#1572087
|
||||
Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
|
||||
Reviewed-on: https://code.engineering.redhat.com/gerrit/137257
|
||||
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
||||
Reviewed-by: Nithya Balachandran <nbalacha@redhat.com>
|
||||
---
|
||||
xlators/cluster/dht/src/dht-rename.c | 22 +++++++++++++++-------
|
||||
1 file changed, 15 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/xlators/cluster/dht/src/dht-rename.c b/xlators/cluster/dht/src/dht-rename.c
|
||||
index ca6b5f4..5a72c1f 100644
|
||||
--- a/xlators/cluster/dht/src/dht-rename.c
|
||||
+++ b/xlators/cluster/dht/src/dht-rename.c
|
||||
@@ -1690,13 +1690,14 @@ int
|
||||
dht_rename (call_frame_t *frame, xlator_t *this,
|
||||
loc_t *oldloc, loc_t *newloc, dict_t *xdata)
|
||||
{
|
||||
- xlator_t *src_cached = NULL;
|
||||
- xlator_t *src_hashed = NULL;
|
||||
- xlator_t *dst_cached = NULL;
|
||||
- xlator_t *dst_hashed = NULL;
|
||||
- int op_errno = -1;
|
||||
- int ret = -1;
|
||||
- dht_local_t *local = NULL;
|
||||
+ xlator_t *src_cached = NULL;
|
||||
+ xlator_t *src_hashed = NULL;
|
||||
+ xlator_t *dst_cached = NULL;
|
||||
+ xlator_t *dst_hashed = NULL;
|
||||
+ int op_errno = -1;
|
||||
+ int ret = -1;
|
||||
+ dht_local_t *local = NULL;
|
||||
+ dht_conf_t *conf = NULL;
|
||||
char gfid[GF_UUID_BUF_SIZE] = {0};
|
||||
|
||||
VALIDATE_OR_GOTO (frame, err);
|
||||
@@ -1704,6 +1705,13 @@ dht_rename (call_frame_t *frame, xlator_t *this,
|
||||
VALIDATE_OR_GOTO (oldloc, err);
|
||||
VALIDATE_OR_GOTO (newloc, err);
|
||||
|
||||
+ conf = this->private;
|
||||
+
|
||||
+ if (conf->subvolume_cnt == 1) {
|
||||
+ default_rename (frame, this, oldloc, newloc, xdata);
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
gf_uuid_unparse(oldloc->inode->gfid, gfid);
|
||||
|
||||
src_hashed = dht_subvol_get_hashed (this, oldloc);
|
||||
--
|
||||
1.8.3.1
|
||||
|
@ -0,0 +1,52 @@
|
||||
From c5401605f80c2630e39b283f10b7da92ff777863 Mon Sep 17 00:00:00 2001
|
||||
From: Susant Palai <spalai@redhat.com>
|
||||
Date: Fri, 27 Apr 2018 16:40:02 +0530
|
||||
Subject: [PATCH 251/260] dht: gf_defrag_settle_hash should ignore ENOENT and
|
||||
ESTALE error
|
||||
|
||||
Problem: A directory deletion can happen just before gf_defrag_settle_hash
|
||||
which internally does a setxattr operation on a directory.
|
||||
|
||||
Solution: Ignore ENOENT and ESTALE errors
|
||||
|
||||
> Fixes: bz#1572581
|
||||
> Change-Id: I2f91809f3b5e02976c4c3a5a596406a8b2f8f6f2
|
||||
> Signed-off-by: Susant Palai <spalai@redhat.com>
|
||||
(cherry picked from commit e2fda098112803bf651c4795952376cb8c1ad204)
|
||||
|
||||
upstream patch: https://review.gluster.org/#/c/19945/
|
||||
|
||||
BUG: 1572585
|
||||
Change-Id: I2f91809f3b5e02976c4c3a5a596406a8b2f8f6f2
|
||||
Signed-off-by: Susant Palai <spalai@redhat.com>
|
||||
Reviewed-on: https://code.engineering.redhat.com/gerrit/137527
|
||||
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
||||
Reviewed-by: Nithya Balachandran <nbalacha@redhat.com>
|
||||
---
|
||||
xlators/cluster/dht/src/dht-rebalance.c | 9 ++++++++-
|
||||
1 file changed, 8 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/xlators/cluster/dht/src/dht-rebalance.c b/xlators/cluster/dht/src/dht-rebalance.c
|
||||
index eee00b8..51af11c 100644
|
||||
--- a/xlators/cluster/dht/src/dht-rebalance.c
|
||||
+++ b/xlators/cluster/dht/src/dht-rebalance.c
|
||||
@@ -3493,8 +3493,15 @@ gf_defrag_settle_hash (xlator_t *this, gf_defrag_info_t *defrag,
|
||||
|
||||
ret = syncop_setxattr (this, loc, fix_layout, 0, NULL, NULL);
|
||||
if (ret) {
|
||||
- gf_log (this->name, GF_LOG_ERROR,
|
||||
+ gf_msg (this->name, GF_LOG_ERROR, -ret,
|
||||
+ DHT_MSG_LAYOUT_FIX_FAILED,
|
||||
"fix layout on %s failed", loc->path);
|
||||
+
|
||||
+ if (-ret == ENOENT || -ret == ESTALE) {
|
||||
+ /* Dir most likely is deleted */
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
return -1;
|
||||
}
|
||||
|
||||
--
|
||||
1.8.3.1
|
||||
|
@ -0,0 +1,60 @@
|
||||
From 90d143d0011c15a5a334946cb628b5415825c786 Mon Sep 17 00:00:00 2001
|
||||
From: Jiffin Tony Thottan <jthottan@redhat.com>
|
||||
Date: Mon, 30 Apr 2018 12:35:01 +0530
|
||||
Subject: [PATCH 252/260] glusterd/ganesha : Skip non-ganesha nodes properly
|
||||
for ganesha HA set up
|
||||
|
||||
Label: BACKPORT FROM UPSTREAM 3.10
|
||||
|
||||
Upstream reference:
|
||||
>Patch unlink https://review.gluster.org/#/c/19949/
|
||||
>Change-Id: Iff7bc3ead43e97847219c5a5cc8b967bf0967903
|
||||
>BUG: 1573078
|
||||
>Signed-off-by: Jiffin Tony Thottan <jthottan@redhat.com>
|
||||
|
||||
Change-Id: Iff7bc3ead43e97847219c5a5cc8b967bf0967903
|
||||
BUG: 1570541
|
||||
Signed-off-by: Jiffin Tony Thottan <jthottan@redhat.com>
|
||||
Reviewed-on: https://code.engineering.redhat.com/gerrit/137768
|
||||
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
||||
Reviewed-by: Kaleb Keithley <kkeithle@redhat.com>
|
||||
Reviewed-by: Sunil Kumar Heggodu Gopala Acharya <sheggodu@redhat.com>
|
||||
---
|
||||
xlators/mgmt/glusterd/src/glusterd-ganesha.c | 21 ++++++++++++---------
|
||||
1 file changed, 12 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/xlators/mgmt/glusterd/src/glusterd-ganesha.c b/xlators/mgmt/glusterd/src/glusterd-ganesha.c
|
||||
index b130d5e..ae7485f 100644
|
||||
--- a/xlators/mgmt/glusterd/src/glusterd-ganesha.c
|
||||
+++ b/xlators/mgmt/glusterd/src/glusterd-ganesha.c
|
||||
@@ -834,15 +834,18 @@ pre_setup (gf_boolean_t run_setup, char **op_errstr)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
- if (check_host_list()) {
|
||||
- ret = setup_cluster(run_setup);
|
||||
- if (ret == -1)
|
||||
- gf_asprintf (op_errstr, "Failed to set up HA "
|
||||
- "config for NFS-Ganesha. "
|
||||
- "Please check the log file for details");
|
||||
- } else
|
||||
- ret = -1;
|
||||
-
|
||||
+ if (run_setup) {
|
||||
+ if (!check_host_list()) {
|
||||
+ gf_asprintf (op_errstr, "Running nfs-ganesha setup command "
|
||||
+ "from node which is not part of ganesha cluster");
|
||||
+ return -1;
|
||||
+ }
|
||||
+ }
|
||||
+ ret = setup_cluster(run_setup);
|
||||
+ if (ret == -1)
|
||||
+ gf_asprintf (op_errstr, "Failed to set up HA "
|
||||
+ "config for NFS-Ganesha. "
|
||||
+ "Please check the log file for details");
|
||||
return ret;
|
||||
}
|
||||
|
||||
--
|
||||
1.8.3.1
|
||||
|
59
0253-geo-rep-Fix-upgrade-issue.patch
Normal file
59
0253-geo-rep-Fix-upgrade-issue.patch
Normal file
@ -0,0 +1,59 @@
|
||||
From 2d1c394b7ea9913c69445d865fb8762ecb4917ce Mon Sep 17 00:00:00 2001
|
||||
From: Kotresh HR <khiremat@redhat.com>
|
||||
Date: Mon, 7 May 2018 01:23:46 -0400
|
||||
Subject: [PATCH 253/260] geo-rep: Fix upgrade issue
|
||||
|
||||
Cause and Analysis:
|
||||
The last synced changelog for entry operations is
|
||||
marked in current version to avoid re-processing
|
||||
of already processed entry operations in a batch
|
||||
during crash/restart of geo-rep. This was not
|
||||
present in previous versoins.
|
||||
|
||||
The marker is maintained in the dictionary with the
|
||||
key 'last_synced_entry' and dictionary is persisted
|
||||
into status file. So upgrading to current version in
|
||||
which the marker is present was failing with KeyError.
|
||||
|
||||
Solution:
|
||||
Load the dictionary with default keys first which
|
||||
contains all the keys including latest ones and then
|
||||
load the values from status file instead of doing
|
||||
otherwise.
|
||||
|
||||
Upstream reference:
|
||||
> fixes: bz#1575490
|
||||
> Patch: https://review.gluster.org/19969
|
||||
|
||||
BUG: 1569490
|
||||
Change-Id: Ic654e6f9a3c97f616761f1362f890352a2186fb4
|
||||
Signed-off-by: Kotresh HR <khiremat@redhat.com>
|
||||
Reviewed-on: https://code.engineering.redhat.com/gerrit/137909
|
||||
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
||||
Reviewed-by: Sunil Kumar Heggodu Gopala Acharya <sheggodu@redhat.com>
|
||||
---
|
||||
geo-replication/syncdaemon/gsyncdstatus.py | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/geo-replication/syncdaemon/gsyncdstatus.py b/geo-replication/syncdaemon/gsyncdstatus.py
|
||||
index 38ca92c..909c669 100644
|
||||
--- a/geo-replication/syncdaemon/gsyncdstatus.py
|
||||
+++ b/geo-replication/syncdaemon/gsyncdstatus.py
|
||||
@@ -152,11 +152,12 @@ class GeorepStatus(object):
|
||||
**kwargs)
|
||||
|
||||
def _update(self, mergerfunc):
|
||||
+ data = self.default_values
|
||||
with LockedOpen(self.filename, 'r+') as f:
|
||||
try:
|
||||
- data = json.load(f)
|
||||
+ data.update(json.load(f))
|
||||
except ValueError:
|
||||
- data = self.default_values
|
||||
+ pass
|
||||
|
||||
data = mergerfunc(data)
|
||||
# If Data is not changed by merger func
|
||||
--
|
||||
1.8.3.1
|
||||
|
99
0254-posix-Avoid-changelog-retries-for-geo-rep.patch
Normal file
99
0254-posix-Avoid-changelog-retries-for-geo-rep.patch
Normal file
@ -0,0 +1,99 @@
|
||||
From 2de9ac218241648f1ec86b73aac728d713862a30 Mon Sep 17 00:00:00 2001
|
||||
From: moagrawa <moagrawa@redhat.com>
|
||||
Date: Fri, 4 May 2018 16:17:42 +0530
|
||||
Subject: [PATCH 254/260] posix: Avoid changelog retries for geo-rep
|
||||
|
||||
Problem: georep is slowdown to migrate directory
|
||||
from master volume to slave volume due to lot
|
||||
of changelog retries
|
||||
|
||||
Solution: Update the condition in posix_getxattr to
|
||||
ignore MDS_INTERNAL_XATTR as it(posix) ignored
|
||||
other internal xattrs
|
||||
|
||||
> BUG: 1571069
|
||||
> Change-Id: I4d91ec73e5b1ca1cb3ecf0825ab9f49e261da70e
|
||||
> fixes: bz#1571069
|
||||
> Signed-off-by: Mohit Agrawal <moagrawa@redhat.com>
|
||||
> (cherry picked from commit f46047ea0f36084f4456887673552a01b926382d)
|
||||
> (Reviewed on: https://review.gluster.org/#/c/19930/)
|
||||
|
||||
BUG: 1565577
|
||||
Change-Id: I85b2e8ed4adcbe34ee5a03acd068693978e9cfe4
|
||||
Signed-off-by: moagrawa <moagrawa@redhat.com>
|
||||
Reviewed-on: https://code.engineering.redhat.com/gerrit/137779
|
||||
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
||||
Reviewed-by: Kotresh Hiremath Ravishankar <khiremat@redhat.com>
|
||||
Reviewed-by: Sunil Kumar Heggodu Gopala Acharya <sheggodu@redhat.com>
|
||||
---
|
||||
xlators/storage/posix/src/posix.c | 33 +++++++++++++++++++++++++++++++++
|
||||
1 file changed, 33 insertions(+)
|
||||
|
||||
diff --git a/xlators/storage/posix/src/posix.c b/xlators/storage/posix/src/posix.c
|
||||
index c680e3f..416d9e4 100644
|
||||
--- a/xlators/storage/posix/src/posix.c
|
||||
+++ b/xlators/storage/posix/src/posix.c
|
||||
@@ -27,6 +27,7 @@
|
||||
#include <sys/uio.h>
|
||||
#include <unistd.h>
|
||||
#include <ftw.h>
|
||||
+#include <regex.h>
|
||||
|
||||
#ifndef GF_BSD_HOST_OS
|
||||
#include <alloca.h>
|
||||
@@ -4625,6 +4626,27 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
+gf_boolean_t
|
||||
+posix_is_mds_xattr (const char *name)
|
||||
+{
|
||||
+ regex_t regcmpl;
|
||||
+ char *key = {"trusted.glusterfs.*.mds$"};
|
||||
+ regmatch_t result[1] = {{0} };
|
||||
+ gf_boolean_t status = _gf_false;
|
||||
+
|
||||
+ if (regcomp (®cmpl, key, REG_EXTENDED)) {
|
||||
+ goto out;
|
||||
+ }
|
||||
+ if (!regexec (®cmpl, name, 1, result, 0)) {
|
||||
+ status = _gf_true;
|
||||
+ goto out;
|
||||
+ }
|
||||
+out:
|
||||
+ regfree(®cmpl);
|
||||
+ return status;
|
||||
+}
|
||||
+
|
||||
+
|
||||
/**
|
||||
* posix_getxattr - this function returns a dictionary with all the
|
||||
* key:value pair present as xattr. used for
|
||||
@@ -4680,6 +4702,13 @@ posix_getxattr (call_frame_t *frame, xlator_t *this,
|
||||
goto out;
|
||||
}
|
||||
|
||||
+ if (name && posix_is_mds_xattr (name)) {
|
||||
+ op_ret = -1;
|
||||
+ op_errno = ENOATTR;
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
+
|
||||
if (loc->inode && IA_ISDIR(loc->inode->ia_type) && name &&
|
||||
ZR_FILE_CONTENT_REQUEST(name)) {
|
||||
ret = posix_get_file_contents (this, loc->gfid, &name[15],
|
||||
@@ -5049,6 +5078,10 @@ posix_getxattr (call_frame_t *frame, xlator_t *this,
|
||||
goto ignore;
|
||||
}
|
||||
|
||||
+ if (posix_is_mds_xattr (keybuffer)) {
|
||||
+ goto ignore;
|
||||
+ }
|
||||
+
|
||||
memset (value_buf, '\0', sizeof(value_buf));
|
||||
have_val = _gf_false;
|
||||
size = sys_lgetxattr (real_path, keybuffer, value_buf,
|
||||
--
|
||||
1.8.3.1
|
||||
|
46
0255-glusterd-update-listen-backlog-value-to-1024.patch
Normal file
46
0255-glusterd-update-listen-backlog-value-to-1024.patch
Normal file
@ -0,0 +1,46 @@
|
||||
From 8b2af4ee879261ea6e690c3c52d9acc5d0a92cfd Mon Sep 17 00:00:00 2001
|
||||
From: Milind Changire <mchangir@redhat.com>
|
||||
Date: Thu, 19 Apr 2018 11:18:58 +0530
|
||||
Subject: [PATCH 255/260] glusterd: update listen-backlog value to 1024
|
||||
|
||||
Update default value of listen-backlog to 1024 to reflect the changes in
|
||||
socket.c
|
||||
|
||||
This keeps the actual implementation in socket.c and the help text in
|
||||
glusterd-volume-set.c consistent
|
||||
|
||||
mainline:
|
||||
> Reviewed-on: https://review.gluster.org/19874
|
||||
> fixes: bz#1564600
|
||||
> Reviewed-by: Raghavendra G <rgowdapp@redhat.com>
|
||||
> Reviewed-by: Jeff Darcy <jeff@pl.atyp.us>
|
||||
> Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
|
||||
(cherry picked from commit d9cf6d25a4719c4f6fb4d88325f08e49fca18e6b)
|
||||
|
||||
Change-Id: If04c9e0bb5afb55edcc7ca57bbc10922b85b7075
|
||||
BUG: 1563804
|
||||
Signed-off-by: Milind Changire <mchangir@redhat.com>
|
||||
Reviewed-on: https://code.engineering.redhat.com/gerrit/136215
|
||||
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
||||
Reviewed-by: Raghavendra Gowdappa <rgowdapp@redhat.com>
|
||||
Reviewed-by: Sunil Kumar Heggodu Gopala Acharya <sheggodu@redhat.com>
|
||||
---
|
||||
xlators/mgmt/glusterd/src/glusterd-volume-set.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/xlators/mgmt/glusterd/src/glusterd-volume-set.c b/xlators/mgmt/glusterd/src/glusterd-volume-set.c
|
||||
index 9bc0933..b9da961 100644
|
||||
--- a/xlators/mgmt/glusterd/src/glusterd-volume-set.c
|
||||
+++ b/xlators/mgmt/glusterd/src/glusterd-volume-set.c
|
||||
@@ -2131,7 +2131,7 @@ struct volopt_map_entry glusterd_volopt_map[] = {
|
||||
.description = "This option uses the value of backlog argument that "
|
||||
"defines the maximum length to which the queue of "
|
||||
"pending connections for socket fd may grow.",
|
||||
- .value = "10",
|
||||
+ .value = "1024",
|
||||
},
|
||||
|
||||
/* Generic transport options */
|
||||
--
|
||||
1.8.3.1
|
||||
|
57
0256-rpc-set-listen-backlog-to-high-value.patch
Normal file
57
0256-rpc-set-listen-backlog-to-high-value.patch
Normal file
@ -0,0 +1,57 @@
|
||||
From 4448795af501355f3893aed05551ee62551e8438 Mon Sep 17 00:00:00 2001
|
||||
From: Milind Changire <mchangir@redhat.com>
|
||||
Date: Fri, 13 Apr 2018 14:51:32 +0530
|
||||
Subject: [PATCH 256/260] rpc: set listen-backlog to high value
|
||||
|
||||
Problem:
|
||||
On node reboot, when glusterd starts volumes rapidly, there's a flood of
|
||||
connections from the bricks to glusterd and from the self-heal daemons
|
||||
to the bricks. This causes SYN Flooding and dropped connections when the
|
||||
listen-backlog is not enough to hold the pending connections to
|
||||
compensate for the rate at which connections are accepted by the RPC
|
||||
layer.
|
||||
|
||||
Solution:
|
||||
Increase the listen-backlog value to 1024. This is a partial solution.
|
||||
Part of the solution is to rearm the listener socket early for quicker
|
||||
accept() of connections.
|
||||
See commit 6964640a977cb10c0c95a94e03c229918fa6eca8 (change 19833)
|
||||
|
||||
mainline:
|
||||
> Reviewed-on: https://review.gluster.org/19836
|
||||
> Change-Id: I56781149919dd6e18cc43884234c6f60f2c93f88
|
||||
> fixes: bz#1564600
|
||||
> Signed-off-by: Milind Changire <mchangir@redhat.com>
|
||||
|
||||
Change-Id: I1d7ac940eb5410cdbf7508a24bfdfc052b35170b
|
||||
BUG: 1563804
|
||||
Signed-off-by: Milind Changire <mchangir@redhat.com>
|
||||
Reviewed-on: https://code.engineering.redhat.com/gerrit/135557
|
||||
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
||||
Reviewed-by: Raghavendra Gowdappa <rgowdapp@redhat.com>
|
||||
Reviewed-by: Sunil Kumar Heggodu Gopala Acharya <sheggodu@redhat.com>
|
||||
---
|
||||
rpc/rpc-transport/socket/src/socket.c | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/rpc/rpc-transport/socket/src/socket.c b/rpc/rpc-transport/socket/src/socket.c
|
||||
index 157b5b7..a6be911 100644
|
||||
--- a/rpc/rpc-transport/socket/src/socket.c
|
||||
+++ b/rpc/rpc-transport/socket/src/socket.c
|
||||
@@ -4613,6 +4613,13 @@ struct volume_options options[] = {
|
||||
.min = GF_MIN_SOCKET_WINDOW_SIZE,
|
||||
.max = GF_MAX_SOCKET_WINDOW_SIZE
|
||||
},
|
||||
+ { .key = {"transport.listen-backlog"},
|
||||
+ .type = GF_OPTION_TYPE_SIZET,
|
||||
+ .description = "This option uses the value of backlog argument that "
|
||||
+ "defines the maximum length to which the queue of "
|
||||
+ "pending connections for socket fd may grow.",
|
||||
+ .default_value = "1024",
|
||||
+ },
|
||||
{ .key = {"transport.tcp-user-timeout"},
|
||||
.type = GF_OPTION_TYPE_INT,
|
||||
.default_value = "0"
|
||||
--
|
||||
1.8.3.1
|
||||
|
57
0257-rpc-rearm-listener-socket-early.patch
Normal file
57
0257-rpc-rearm-listener-socket-early.patch
Normal file
@ -0,0 +1,57 @@
|
||||
From 8879d72884396de4ae2ff41649de5f2d916d272b Mon Sep 17 00:00:00 2001
|
||||
From: Milind Changire <mchangir@redhat.com>
|
||||
Date: Fri, 13 Apr 2018 10:53:46 +0530
|
||||
Subject: [PATCH 257/260] rpc: rearm listener socket early
|
||||
|
||||
Problem:
|
||||
On node reboot, when glusterd starts volumes, a setup with a large
|
||||
number of bricks might cause SYN Flooding and connections to be dropped
|
||||
if the connections are not accepted quickly enough.
|
||||
|
||||
Solution:
|
||||
accept() the connection and rearm the listener socket early to receive
|
||||
more connection requests as soon as possible.
|
||||
|
||||
mainline:
|
||||
> Reviewed-on: https://review.gluster.org/19833
|
||||
> Change-Id: Ibed421e50284c3f7a8fcdb4de7ac86cf53d4b74e
|
||||
> fixes: bz#1564600
|
||||
> Signed-off-by: Milind Changire <mchangir@redhat.com>
|
||||
|
||||
Change-Id: I4bf45b8a12f738ed9b398246e22dfd29e6b1010c
|
||||
BUG: 1563804
|
||||
Signed-off-by: Milind Changire <mchangir@redhat.com>
|
||||
Reviewed-on: https://code.engineering.redhat.com/gerrit/135513
|
||||
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
||||
Reviewed-by: Raghavendra Gowdappa <rgowdapp@redhat.com>
|
||||
Reviewed-by: Sunil Kumar Heggodu Gopala Acharya <sheggodu@redhat.com>
|
||||
---
|
||||
rpc/rpc-transport/socket/src/socket.c | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/rpc/rpc-transport/socket/src/socket.c b/rpc/rpc-transport/socket/src/socket.c
|
||||
index a6be911..b98efdc 100644
|
||||
--- a/rpc/rpc-transport/socket/src/socket.c
|
||||
+++ b/rpc/rpc-transport/socket/src/socket.c
|
||||
@@ -2746,6 +2746,9 @@ socket_server_event_handler (int fd, int idx, int gen, void *data,
|
||||
if (poll_in) {
|
||||
new_sock = accept (priv->sock, SA (&new_sockaddr), &addrlen);
|
||||
|
||||
+ if (ctx)
|
||||
+ event_handled (ctx->event_pool, fd, idx, gen);
|
||||
+
|
||||
if (new_sock == -1) {
|
||||
gf_log (this->name, GF_LOG_WARNING,
|
||||
"accept on %d failed (%s)",
|
||||
@@ -2968,8 +2971,6 @@ socket_server_event_handler (int fd, int idx, int gen, void *data,
|
||||
}
|
||||
}
|
||||
out:
|
||||
- event_handled (ctx->event_pool, fd, idx, gen);
|
||||
-
|
||||
if (cname && (cname != this->ssl_name)) {
|
||||
GF_FREE(cname);
|
||||
}
|
||||
--
|
||||
1.8.3.1
|
||||
|
286
0258-cluster-dht-log-error-only-if-layout-healing-is-requ.patch
Normal file
286
0258-cluster-dht-log-error-only-if-layout-healing-is-requ.patch
Normal file
@ -0,0 +1,286 @@
|
||||
From 9ac423d71b9d9d8875ce2af29e2bcf5770b61d5a Mon Sep 17 00:00:00 2001
|
||||
From: Raghavendra G <rgowdapp@redhat.com>
|
||||
Date: Fri, 16 Mar 2018 12:16:43 +0530
|
||||
Subject: [PATCH 258/260] cluster/dht: log error only if layout healing is
|
||||
required
|
||||
|
||||
selfhealing of directory is invoked on two conditions:
|
||||
1. no layout on disk or layout has some anomalies (holes/overlaps)
|
||||
2. mds xattr is not set on the directory
|
||||
|
||||
When dht_selfheal_directory is called with a correct layout just to
|
||||
set mds xattr, we see error msgs complaining about "not able to form
|
||||
layout on directory", which is misleading as the layout is
|
||||
correct. So, log this msg only if layout has anomalies.
|
||||
|
||||
>Change-Id: I4af25246fc3a2450c2426e9902d1a5b372eab125
|
||||
>updates: bz#1543279
|
||||
>BUG: 1543279
|
||||
>Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
|
||||
|
||||
upstream patch: https://review.gluster.org/19727
|
||||
BUG: 1567100
|
||||
Change-Id: I169823ec3d4455c43f575e6c4ec0735aceb54e6b
|
||||
Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
|
||||
Reviewed-on: https://code.engineering.redhat.com/gerrit/138149
|
||||
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
||||
Reviewed-by: Sunil Kumar Heggodu Gopala Acharya <sheggodu@redhat.com>
|
||||
---
|
||||
xlators/cluster/dht/src/dht-common.h | 1 +
|
||||
xlators/cluster/dht/src/dht-selfheal.c | 199 ++-------------------------------
|
||||
2 files changed, 12 insertions(+), 188 deletions(-)
|
||||
|
||||
diff --git a/xlators/cluster/dht/src/dht-common.h b/xlators/cluster/dht/src/dht-common.h
|
||||
index a785876..9d429af 100644
|
||||
--- a/xlators/cluster/dht/src/dht-common.h
|
||||
+++ b/xlators/cluster/dht/src/dht-common.h
|
||||
@@ -312,6 +312,7 @@ struct dht_local {
|
||||
uint32_t overlaps_cnt;
|
||||
uint32_t down;
|
||||
uint32_t misc;
|
||||
+ uint32_t missing_cnt;
|
||||
dht_selfheal_dir_cbk_t dir_cbk;
|
||||
dht_selfheal_layout_t healer;
|
||||
dht_need_heal_t should_heal;
|
||||
diff --git a/xlators/cluster/dht/src/dht-selfheal.c b/xlators/cluster/dht/src/dht-selfheal.c
|
||||
index 53c59a2..5812f12 100644
|
||||
--- a/xlators/cluster/dht/src/dht-selfheal.c
|
||||
+++ b/xlators/cluster/dht/src/dht-selfheal.c
|
||||
@@ -359,7 +359,8 @@ dht_should_heal_layout (call_frame_t *frame, dht_layout_t **heal,
|
||||
ret = dht_layout_anomalies (frame->this, &local->loc, *ondisk,
|
||||
&local->selfheal.hole_cnt,
|
||||
&local->selfheal.overlaps_cnt,
|
||||
- NULL, &local->selfheal.down,
|
||||
+ &local->selfheal.missing_cnt,
|
||||
+ &local->selfheal.down,
|
||||
&local->selfheal.misc, NULL);
|
||||
|
||||
if (ret < 0)
|
||||
@@ -1015,115 +1016,6 @@ dht_layout_index_from_conf (dht_layout_t *layout, xlator_t *xlator)
|
||||
return i;
|
||||
}
|
||||
|
||||
-
|
||||
-static int
|
||||
-dht_selfheal_dir_xattr_for_nameless_lookup (call_frame_t *frame, loc_t *loc,
|
||||
- dht_layout_t *layout)
|
||||
-{
|
||||
- dht_local_t *local = NULL;
|
||||
- int missing_xattr = 0;
|
||||
- int i = 0;
|
||||
- xlator_t *this = NULL;
|
||||
- dht_conf_t *conf = NULL;
|
||||
- dht_layout_t *dummy = NULL;
|
||||
- int j = 0;
|
||||
-
|
||||
- local = frame->local;
|
||||
- this = frame->this;
|
||||
- conf = this->private;
|
||||
-
|
||||
- for (i = 0; i < layout->cnt; i++) {
|
||||
- if (layout->list[i].err != -1 || !layout->list[i].stop) {
|
||||
- /* err != -1 would mean xattr present on the directory
|
||||
- or the directory is non existent.
|
||||
- !layout->list[i].stop would mean layout absent
|
||||
- */
|
||||
-
|
||||
- continue;
|
||||
- }
|
||||
- missing_xattr++;
|
||||
- }
|
||||
-
|
||||
- /* Also account for subvolumes with no-layout. Used for zero'ing out
|
||||
- the layouts and for setting quota key's if present */
|
||||
-
|
||||
- /* Send where either the subvol is not part of layout,
|
||||
- * or it is part of the layout but error is non-zero but error
|
||||
- * is not equal to -1 or ENOENT.
|
||||
- */
|
||||
-
|
||||
- for (i = 0; i < conf->subvolume_cnt; i++) {
|
||||
- if (dht_is_subvol_part_of_layout (layout, conf->subvolumes[i])
|
||||
- == _gf_false) {
|
||||
- missing_xattr++;
|
||||
- continue;
|
||||
- }
|
||||
-
|
||||
- j = dht_layout_index_from_conf (layout, conf->subvolumes[i]);
|
||||
-
|
||||
- if ((j != -1) && (layout->list[j].err != -1) &&
|
||||
- (layout->list[j].err != 0) &&
|
||||
- (layout->list[j].err != ENOENT)) {
|
||||
- missing_xattr++;
|
||||
- }
|
||||
-
|
||||
- }
|
||||
-
|
||||
-
|
||||
- gf_msg_trace (this->name, 0,
|
||||
- "%d subvolumes missing xattr for %s",
|
||||
- missing_xattr, loc->path);
|
||||
-
|
||||
- if (missing_xattr == 0) {
|
||||
- dht_selfheal_dir_finish (frame, this, 0, 1);
|
||||
- return 0;
|
||||
- }
|
||||
-
|
||||
- local->call_cnt = missing_xattr;
|
||||
-
|
||||
- if (gf_log_get_loglevel () >= GF_LOG_DEBUG)
|
||||
- dht_log_new_layout_for_dir_selfheal (this, loc, layout);
|
||||
-
|
||||
- for (i = 0; i < layout->cnt; i++) {
|
||||
- if (layout->list[i].err != -1 || !layout->list[i].stop)
|
||||
- continue;
|
||||
-
|
||||
- dht_selfheal_dir_xattr_persubvol (frame, loc, layout, i, NULL);
|
||||
-
|
||||
- if (--missing_xattr == 0)
|
||||
- break;
|
||||
- }
|
||||
-
|
||||
- dummy = dht_layout_new (this, 1);
|
||||
- if (!dummy)
|
||||
- goto out;
|
||||
-
|
||||
- for (i = 0; i < conf->subvolume_cnt && missing_xattr; i++) {
|
||||
- if (dht_is_subvol_part_of_layout (layout, conf->subvolumes[i])
|
||||
- == _gf_false) {
|
||||
- dht_selfheal_dir_xattr_persubvol (frame, loc, dummy, 0,
|
||||
- conf->subvolumes[i]);
|
||||
- missing_xattr--;
|
||||
- continue;
|
||||
- }
|
||||
-
|
||||
- j = dht_layout_index_from_conf (layout, conf->subvolumes[i]);
|
||||
-
|
||||
- if ((j != -1) && (layout->list[j].err != -1) &&
|
||||
- (layout->list[j].err != ENOENT) &&
|
||||
- (layout->list[j].err != 0)) {
|
||||
- dht_selfheal_dir_xattr_persubvol (frame, loc, dummy, 0,
|
||||
- conf->subvolumes[i]);
|
||||
- missing_xattr--;
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- dht_layout_unref (this, dummy);
|
||||
-out:
|
||||
- return 0;
|
||||
-
|
||||
-}
|
||||
-
|
||||
int
|
||||
dht_selfheal_dir_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
||||
int op_ret, int op_errno, struct iatt *statpre,
|
||||
@@ -2296,7 +2188,8 @@ dht_selfheal_directory (call_frame_t *frame, dht_selfheal_dir_cbk_t dir_cbk,
|
||||
dht_layout_anomalies (this, loc, layout,
|
||||
&local->selfheal.hole_cnt,
|
||||
&local->selfheal.overlaps_cnt,
|
||||
- NULL, &local->selfheal.down,
|
||||
+ &local->selfheal.missing_cnt,
|
||||
+ &local->selfheal.down,
|
||||
&local->selfheal.misc, NULL);
|
||||
|
||||
down = local->selfheal.down;
|
||||
@@ -2325,14 +2218,14 @@ dht_selfheal_directory (call_frame_t *frame, dht_selfheal_dir_cbk_t dir_cbk,
|
||||
|
||||
dht_layout_sort_volname (layout);
|
||||
local->heal_layout = _gf_true;
|
||||
- ret = dht_selfheal_dir_getafix (frame, loc, layout);
|
||||
|
||||
- if (ret == -1) {
|
||||
- gf_msg (this->name, GF_LOG_INFO, 0,
|
||||
- DHT_MSG_DIR_SELFHEAL_FAILED,
|
||||
- "Directory selfheal failed: "
|
||||
- "Unable to form layout for directory %s",
|
||||
- loc->path);
|
||||
+ /* Ignore return value as it can be inferred from result of
|
||||
+ * dht_layout_anomalies
|
||||
+ */
|
||||
+ dht_selfheal_dir_getafix (frame, loc, layout);
|
||||
+
|
||||
+ if (!(local->selfheal.hole_cnt || local->selfheal.overlaps_cnt ||
|
||||
+ local->selfheal.missing_cnt)) {
|
||||
local->heal_layout = _gf_false;
|
||||
}
|
||||
|
||||
@@ -2352,76 +2245,6 @@ sorry_no_fix:
|
||||
}
|
||||
|
||||
int
|
||||
-dht_selfheal_directory_for_nameless_lookup (call_frame_t *frame,
|
||||
- dht_selfheal_dir_cbk_t dir_cbk,
|
||||
- loc_t *loc, dht_layout_t *layout)
|
||||
-{
|
||||
- dht_local_t *local = NULL;
|
||||
- uint32_t down = 0;
|
||||
- uint32_t misc = 0;
|
||||
- int ret = 0;
|
||||
- xlator_t *this = NULL;
|
||||
-
|
||||
- local = frame->local;
|
||||
- this = frame->this;
|
||||
- dht_layout_anomalies (this, loc, layout,
|
||||
- &local->selfheal.hole_cnt,
|
||||
- &local->selfheal.overlaps_cnt,
|
||||
- NULL, &local->selfheal.down,
|
||||
- &local->selfheal.misc, NULL);
|
||||
-
|
||||
- down = local->selfheal.down;
|
||||
- misc = local->selfheal.misc;
|
||||
-
|
||||
- local->selfheal.dir_cbk = dir_cbk;
|
||||
- local->selfheal.layout = dht_layout_ref (this, layout);
|
||||
-
|
||||
- if (down) {
|
||||
- gf_msg (this->name, GF_LOG_WARNING, 0,
|
||||
- DHT_MSG_SUBVOL_DOWN_ERROR,
|
||||
- "%d subvolumes down -- not fixing", down);
|
||||
- ret = 0;
|
||||
- goto sorry_no_fix;
|
||||
- }
|
||||
-
|
||||
- if (misc) {
|
||||
- gf_msg (this->name, GF_LOG_WARNING, 0,
|
||||
- DHT_MSG_SUBVOL_ERROR,
|
||||
- "%d subvolumes have unrecoverable errors", misc);
|
||||
- ret = 0;
|
||||
- goto sorry_no_fix;
|
||||
- }
|
||||
-
|
||||
- dht_layout_sort_volname (layout);
|
||||
- ret = dht_selfheal_dir_getafix (frame, loc, layout);
|
||||
-
|
||||
- if (ret == -1) {
|
||||
- gf_msg (this->name, GF_LOG_WARNING, 0,
|
||||
- DHT_MSG_LAYOUT_FORM_FAILED,
|
||||
- "not able to form layout for the directory");
|
||||
- goto sorry_no_fix;
|
||||
- }
|
||||
-
|
||||
- ret = dht_selfheal_layout_lock (frame, layout, _gf_false,
|
||||
- dht_selfheal_dir_xattr_for_nameless_lookup,
|
||||
- dht_should_heal_layout);
|
||||
-
|
||||
- if (ret < 0) {
|
||||
- goto sorry_no_fix;
|
||||
- }
|
||||
-
|
||||
- return 0;
|
||||
-
|
||||
-sorry_no_fix:
|
||||
- /* TODO: need to put appropriate local->op_errno */
|
||||
- dht_selfheal_dir_finish (frame, this, ret, 1);
|
||||
-
|
||||
- return 0;
|
||||
-
|
||||
-
|
||||
-}
|
||||
-
|
||||
-int
|
||||
dht_selfheal_restore (call_frame_t *frame, dht_selfheal_dir_cbk_t dir_cbk,
|
||||
loc_t *loc, dht_layout_t *layout)
|
||||
{
|
||||
--
|
||||
1.8.3.1
|
||||
|
78
0259-Quota-Turn-on-ssl-for-crawler-clients-if-needed.patch
Normal file
78
0259-Quota-Turn-on-ssl-for-crawler-clients-if-needed.patch
Normal file
@ -0,0 +1,78 @@
|
||||
From 0652899ce703542fc7fd676f3fd80748395d7094 Mon Sep 17 00:00:00 2001
|
||||
From: Sanoj Unnikrishnan <sunnikri@redhat.com>
|
||||
Date: Wed, 9 May 2018 13:43:48 +0530
|
||||
Subject: [PATCH 259/260] Quota: Turn on ssl for crawler clients if needed
|
||||
|
||||
Problem: Quota uses per brick client generated by
|
||||
glusterd_generate_client_per_brick_volfile to crawl the
|
||||
individual bricks. These clients were not being configured
|
||||
with ssl if volume has client.ssl turned on.
|
||||
|
||||
Solution: turn on client.ssl if the volume has client.ssl
|
||||
option set to on.
|
||||
|
||||
Upstream Reference:
|
||||
> Change-Id: Id3a13d5110c4376d734480c42da1ce6844cc8240
|
||||
> fixes: bz#1575858
|
||||
> Reviewed on: https://review.gluster.org/#/c/19978/
|
||||
|
||||
BUG: 1557551
|
||||
Change-Id: Id3a13d5110c4376d734480c42da1ce6844cc8240
|
||||
Signed-off-by: Sanoj Unnikrishnan <sunnikri@redhat.com>
|
||||
Reviewed-on: https://code.engineering.redhat.com/gerrit/138158
|
||||
Reviewed-by: Hari Gowtham Gopal <hgowtham@redhat.com>
|
||||
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
||||
Reviewed-by: Sunil Kumar Heggodu Gopala Acharya <sheggodu@redhat.com>
|
||||
---
|
||||
xlators/mgmt/glusterd/src/glusterd-volgen.c | 21 ++++++++++++++++++++-
|
||||
1 file changed, 20 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/xlators/mgmt/glusterd/src/glusterd-volgen.c b/xlators/mgmt/glusterd/src/glusterd-volgen.c
|
||||
index 3926bd3..3d8ad77 100644
|
||||
--- a/xlators/mgmt/glusterd/src/glusterd-volgen.c
|
||||
+++ b/xlators/mgmt/glusterd/src/glusterd-volgen.c
|
||||
@@ -5726,6 +5726,8 @@ glusterd_generate_client_per_brick_volfile (glusterd_volinfo_t *volinfo)
|
||||
dict_t *dict = NULL;
|
||||
xlator_t *xl = NULL;
|
||||
int ret = -1;
|
||||
+ char *ssl_str = NULL;
|
||||
+ gf_boolean_t ssl_bool = _gf_false;
|
||||
|
||||
dict = dict_new ();
|
||||
if (!dict)
|
||||
@@ -5733,7 +5735,22 @@ glusterd_generate_client_per_brick_volfile (glusterd_volinfo_t *volinfo)
|
||||
|
||||
ret = dict_set_uint32 (dict, "trusted-client", GF_CLIENT_TRUSTED);
|
||||
if (ret)
|
||||
- goto out;
|
||||
+ goto free_dict;
|
||||
+
|
||||
+ if (dict_get_str(volinfo->dict, "client.ssl", &ssl_str) == 0) {
|
||||
+ if (gf_string2boolean(ssl_str, &ssl_bool) == 0) {
|
||||
+ if (ssl_bool) {
|
||||
+ if (dict_set_dynstr_with_alloc(dict,
|
||||
+ "client.ssl", "on") != 0) {
|
||||
+ ret = -1;
|
||||
+ goto free_dict;
|
||||
+ }
|
||||
+ }
|
||||
+ } else {
|
||||
+ ret = -1;
|
||||
+ goto free_dict;
|
||||
+ }
|
||||
+ }
|
||||
|
||||
cds_list_for_each_entry (brick, &volinfo->bricks, brick_list) {
|
||||
xl = volgen_graph_build_client (&graph, volinfo,
|
||||
@@ -5760,6 +5777,8 @@ out:
|
||||
if (ret)
|
||||
volgen_graph_free (&graph);
|
||||
|
||||
+free_dict:
|
||||
+
|
||||
if (dict)
|
||||
dict_unref (dict);
|
||||
|
||||
--
|
||||
1.8.3.1
|
||||
|
@ -0,0 +1,44 @@
|
||||
From 1eb5f1a725cc9afdd7b1a7b29cf446b9c60974c6 Mon Sep 17 00:00:00 2001
|
||||
From: Mohit Agrawal <moagrawa@redhat.com>
|
||||
Date: Tue, 8 May 2018 14:52:04 +0530
|
||||
Subject: [PATCH 260/260] dht: Avoid dict log flooding for internal MDS xattr
|
||||
|
||||
Problem: Before populate MDS internal xattr first dht checks if MDS is
|
||||
present in xattr or not.If xattr dictionary is NULL dict_get
|
||||
log the message either dict or key is NULL
|
||||
|
||||
Solution: Before call dict_get check xattr, if it is NULL then no
|
||||
need to call dict_get.
|
||||
|
||||
> BUG: 1575910
|
||||
> Change-Id: I81604ec5945b85eba14b42f4583d06ec713028f4
|
||||
> fixes: bz#1575910
|
||||
> (cherry picked from commit ed5a09e4aea7f64f9a43698955e24285a936f0c0)
|
||||
> (Upstream link https://review.gluster.org/#/c/19981/)
|
||||
|
||||
BUG: 1575895
|
||||
Change-Id: I728a8068786f94d3793a91cdd5c64f813d7545ca
|
||||
Signed-off-by: Mohit Agrawal <moagrawa@redhat.com>
|
||||
Reviewed-on: https://code.engineering.redhat.com/gerrit/138205
|
||||
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
||||
Reviewed-by: Sunil Kumar Heggodu Gopala Acharya <sheggodu@redhat.com>
|
||||
---
|
||||
xlators/cluster/dht/src/dht-common.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/xlators/cluster/dht/src/dht-common.c b/xlators/cluster/dht/src/dht-common.c
|
||||
index 3b8ba6d..a985481 100644
|
||||
--- a/xlators/cluster/dht/src/dht-common.c
|
||||
+++ b/xlators/cluster/dht/src/dht-common.c
|
||||
@@ -855,7 +855,7 @@ dht_common_mark_mdsxattr (call_frame_t *frame, int *errst, int mark_during_fresh
|
||||
and wind a setxattr call on hashed subvol to update
|
||||
internal xattr
|
||||
*/
|
||||
- if (!dict_get (local->xattr, conf->mds_xattr_key)) {
|
||||
+ if (!local->xattr || !dict_get (local->xattr, conf->mds_xattr_key)) {
|
||||
/* It means no internal MDS xattr has been set yet
|
||||
*/
|
||||
/* Check the status of all subvol are up while call
|
||||
--
|
||||
1.8.3.1
|
||||
|
@ -192,7 +192,7 @@ Release: 0.1%{?prereltag:.%{prereltag}}%{?dist}
|
||||
%else
|
||||
Name: glusterfs
|
||||
Version: 3.12.2
|
||||
Release: 8%{?dist}
|
||||
Release: 9%{?dist}
|
||||
%endif
|
||||
License: GPLv2 or LGPLv3+
|
||||
Group: System Environment/Base
|
||||
@ -501,6 +501,30 @@ Patch0233: 0233-libglusterfs-fix-comparison-of-a-NULL-dict-with-a-no.patch
|
||||
Patch0234: 0234-ec-Use-tiebreaker_inodelk-where-necessary.patch
|
||||
Patch0235: 0235-cluster-syncop-Implement-tiebreaker-inodelk-entrylk.patch
|
||||
Patch0236: 0236-cluster-syncop-Address-comments-in-3ad68df725ac32f83.patch
|
||||
Patch0237: 0237-cluster-dht-Fix-dht_rename-lock-order.patch
|
||||
Patch0238: 0238-quota-Build-is-failed-due-to-access-rpc-refcount-in-.patch
|
||||
Patch0239: 0239-geo-rep-Fix-syncing-of-symlink.patch
|
||||
Patch0240: 0240-shared-storage-Prevent-mounting-shared-storage-from-.patch
|
||||
Patch0241: 0241-server-auth-add-option-for-strict-authentication.patch
|
||||
Patch0242: 0242-feature-changelog-remove-unused-variable.patch
|
||||
Patch0243: 0243-timer-Fix-possible-race-during-cleanup.patch
|
||||
Patch0244: 0244-common-ha-All-statd-related-files-need-to-be-owned-b.patch
|
||||
Patch0245: 0245-build-make-RHGS-version-available-for-server.patch
|
||||
Patch0246: 0246-glusterd-Fix-for-memory-leak-in-get-state-detail.patch
|
||||
Patch0247: 0247-protocol-server-unwind-as-per-op-version.patch
|
||||
Patch0248: 0248-performance-md-cache-purge-cache-on-ENOENT-ESTALE-er.patch
|
||||
Patch0249: 0249-cluster-dht-unwind-if-dht_selfheal_dir_mkdir-returns.patch
|
||||
Patch0250: 0250-cluster-dht-act-as-passthrough-for-renames-on-single.patch
|
||||
Patch0251: 0251-dht-gf_defrag_settle_hash-should-ignore-ENOENT-and-E.patch
|
||||
Patch0252: 0252-glusterd-ganesha-Skip-non-ganesha-nodes-properly-for.patch
|
||||
Patch0253: 0253-geo-rep-Fix-upgrade-issue.patch
|
||||
Patch0254: 0254-posix-Avoid-changelog-retries-for-geo-rep.patch
|
||||
Patch0255: 0255-glusterd-update-listen-backlog-value-to-1024.patch
|
||||
Patch0256: 0256-rpc-set-listen-backlog-to-high-value.patch
|
||||
Patch0257: 0257-rpc-rearm-listener-socket-early.patch
|
||||
Patch0258: 0258-cluster-dht-log-error-only-if-layout-healing-is-requ.patch
|
||||
Patch0259: 0259-Quota-Turn-on-ssl-for-crawler-clients-if-needed.patch
|
||||
Patch0260: 0260-dht-Avoid-dict-log-flooding-for-internal-MDS-xattr.patch
|
||||
|
||||
%description
|
||||
GlusterFS is a distributed file-system capable of scaling to several
|
||||
@ -1152,6 +1176,10 @@ find ./tests ./run-tests.sh -type f | cpio -pd %{buildroot}%{_prefix}/share/glus
|
||||
install -p -m 0744 -D extras/command-completion/gluster.bash \
|
||||
%{buildroot}%{_sysconfdir}/bash_completion.d/gluster
|
||||
|
||||
%if ( 0%{?_build_server} )
|
||||
echo "RHGS 3.4.0" > %{buildroot}%{_datadir}/glusterfs/release
|
||||
%endif
|
||||
|
||||
%clean
|
||||
rm -rf %{buildroot}
|
||||
|
||||
@ -1853,6 +1881,7 @@ exit 0
|
||||
|
||||
# Extra utility script
|
||||
%dir %{_libexecdir}/glusterfs
|
||||
%{_datadir}/glusterfs/release
|
||||
%dir %{_datadir}/glusterfs/scripts
|
||||
%{_datadir}/glusterfs/scripts/stop-all-gluster-processes.sh
|
||||
%if ( 0%{?_with_systemd:1} )
|
||||
@ -2442,6 +2471,12 @@ fi
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Wed May 09 2018 Milind Changire <mchangir@redhat.com> - 3.12.2-9
|
||||
- fixes bugs bz#1546717 bz#1557551 bz#1558948 bz#1561999 bz#1563804
|
||||
bz#1565015 bz#1565119 bz#1565399 bz#1565577 bz#1567100 bz#1567899 bz#1568374
|
||||
bz#1568969 bz#1569490 bz#1570514 bz#1570541 bz#1570582 bz#1571645 bz#1572087
|
||||
bz#1572585 bz#1575895
|
||||
|
||||
* Fri Apr 20 2018 Milind Changire <mchangir@redhat.com> - 3.12.2-8
|
||||
- fixes bugs bz#1466129 bz#1475779 bz#1523216 bz#1535281 bz#1546941
|
||||
bz#1550315 bz#1550991 bz#1553677 bz#1554291 bz#1559452 bz#1560955 bz#1562744
|
||||
|
Loading…
Reference in New Issue
Block a user