autobuild v3.12.2-17
Resolves: bz#1615578 bz#1619416 bz#1619538 bz#1620469 bz#1620765 Signed-off-by: Milind Changire <mchangir@redhat.com>
This commit is contained in:
parent
c459b4cbb4
commit
0cd70ea55b
@ -0,0 +1,70 @@
|
|||||||
|
From d463acc86f218abeba9a95b49702a5be491f3110 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mohammed Rafi KC <rkavunga@redhat.com>
|
||||||
|
Date: Sat, 18 Aug 2018 01:25:34 +0530
|
||||||
|
Subject: [PATCH 352/359] snapshot:Fail snapshot creation if an empty
|
||||||
|
description provided
|
||||||
|
|
||||||
|
Snapshot description should have a valid string. Creating a
|
||||||
|
snapshot with null value will cause reading from info file
|
||||||
|
to fail with a null exception
|
||||||
|
|
||||||
|
>Change-Id: I9f84154b8e3e7ffefa5438807b3bb9b4e0d964ca
|
||||||
|
>updates: bz#1618004
|
||||||
|
>Signed-off-by: Mohammed Rafi KC <rkavunga@redhat.com>
|
||||||
|
|
||||||
|
upstream patch: https://review.gluster.org/#/c/glusterfs/+/20770/
|
||||||
|
|
||||||
|
Change-Id: I9f84154b8e3e7ffefa5438807b3bb9b4e0d964ca
|
||||||
|
BUG: 1615578
|
||||||
|
Signed-off-by: Sanju Rakonde <srakonde@redhat.com>
|
||||||
|
Reviewed-on: https://code.engineering.redhat.com/gerrit/147517
|
||||||
|
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
||||||
|
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
|
||||||
|
---
|
||||||
|
tests/basic/uss.t | 1 +
|
||||||
|
xlators/mgmt/glusterd/src/glusterd-snapshot.c | 10 ++++++++++
|
||||||
|
2 files changed, 11 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/tests/basic/uss.t b/tests/basic/uss.t
|
||||||
|
index 6cfc030..40e556e 100644
|
||||||
|
--- a/tests/basic/uss.t
|
||||||
|
+++ b/tests/basic/uss.t
|
||||||
|
@@ -52,6 +52,7 @@ TEST ln $M0/f1 $M0/dir/f3
|
||||||
|
TEST $CLI snapshot config activate-on-create enable
|
||||||
|
TEST $CLI volume set $V0 features.uss enable;
|
||||||
|
|
||||||
|
+TEST ! $CLI snapshot create snap1 $V0 no-timestamp description "";
|
||||||
|
TEST $CLI snapshot create snap1 $V0 no-timestamp;
|
||||||
|
|
||||||
|
for i in {11..20} ; do echo "file" > $M0/file$i ; done
|
||||||
|
diff --git a/xlators/mgmt/glusterd/src/glusterd-snapshot.c b/xlators/mgmt/glusterd/src/glusterd-snapshot.c
|
||||||
|
index 09e10bf..fdd5012 100644
|
||||||
|
--- a/xlators/mgmt/glusterd/src/glusterd-snapshot.c
|
||||||
|
+++ b/xlators/mgmt/glusterd/src/glusterd-snapshot.c
|
||||||
|
@@ -2518,6 +2518,7 @@ glusterd_snapshot_create_prevalidate (dict_t *dict, char **op_errstr,
|
||||||
|
int64_t effective_max_limit = 0;
|
||||||
|
int flags = 0;
|
||||||
|
uint64_t opt_hard_max = GLUSTERD_SNAPS_MAX_HARD_LIMIT;
|
||||||
|
+ char *description = NULL;
|
||||||
|
|
||||||
|
this = THIS;
|
||||||
|
GF_ASSERT (op_errstr);
|
||||||
|
@@ -2544,6 +2545,15 @@ glusterd_snapshot_create_prevalidate (dict_t *dict, char **op_errstr,
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ ret = dict_get_str (dict, "description", &description);
|
||||||
|
+ if (description && !(*description)) {
|
||||||
|
+ /* description should have a non-null value */
|
||||||
|
+ ret = -1;
|
||||||
|
+ snprintf (err_str, sizeof (err_str), "Snapshot cannot be "
|
||||||
|
+ "created with empty description");
|
||||||
|
+ goto out;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
ret = dict_get_int32 (dict, "flags", &flags);
|
||||||
|
if (ret) {
|
||||||
|
gf_msg (this->name, GF_LOG_ERROR, 0,
|
||||||
|
--
|
||||||
|
1.8.3.1
|
||||||
|
|
131
0353-snapshot-handshake-store-description-after-strdup.patch
Normal file
131
0353-snapshot-handshake-store-description-after-strdup.patch
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
From 69e6933898a37ef7c929b2d4b5561e5e3a407be4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mohammed Rafi KC <rkavunga@redhat.com>
|
||||||
|
Date: Thu, 16 Aug 2018 17:04:22 +0530
|
||||||
|
Subject: [PATCH 353/359] snapshot/handshake: store description after strdup
|
||||||
|
|
||||||
|
problem:
|
||||||
|
During a handshake, when we import a friend data
|
||||||
|
snap description variable was just referenced to
|
||||||
|
dictionary value.
|
||||||
|
|
||||||
|
Solution:
|
||||||
|
snap description should have a separate memory allocated
|
||||||
|
through gf_strdup
|
||||||
|
|
||||||
|
>Change-Id: I94da0c57919e1228919231d1563a001362b100b8
|
||||||
|
>fixes: bz#1618004
|
||||||
|
>Signed-off-by: Mohammed Rafi KC <rkavunga@redhat.com>
|
||||||
|
|
||||||
|
upstream patch: https://review.gluster.org/#/c/glusterfs/+/20747/
|
||||||
|
|
||||||
|
Change-Id: I94da0c57919e1228919231d1563a001362b100b8
|
||||||
|
BUG: 1615578
|
||||||
|
Signed-off-by: Sanju Rakonde <srakonde@redhat.com>
|
||||||
|
Reviewed-on: https://code.engineering.redhat.com/gerrit/147521
|
||||||
|
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
||||||
|
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
|
||||||
|
---
|
||||||
|
...-1618004-fix-memory-corruption-in-snap-import.t | 48 ++++++++++++++++++++++
|
||||||
|
.../mgmt/glusterd/src/glusterd-snapshot-utils.c | 17 ++++++--
|
||||||
|
2 files changed, 62 insertions(+), 3 deletions(-)
|
||||||
|
create mode 100644 tests/bugs/snapshot/bug-1618004-fix-memory-corruption-in-snap-import.t
|
||||||
|
|
||||||
|
diff --git a/tests/bugs/snapshot/bug-1618004-fix-memory-corruption-in-snap-import.t b/tests/bugs/snapshot/bug-1618004-fix-memory-corruption-in-snap-import.t
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..a2c004e
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/bugs/snapshot/bug-1618004-fix-memory-corruption-in-snap-import.t
|
||||||
|
@@ -0,0 +1,48 @@
|
||||||
|
+#!/bin/bash
|
||||||
|
+
|
||||||
|
+. $(dirname $0)/../../include.rc
|
||||||
|
+. $(dirname $0)/../../volume.rc
|
||||||
|
+. $(dirname $0)/../../snapshot.rc
|
||||||
|
+. $(dirname $0)/../../cluster.rc
|
||||||
|
+
|
||||||
|
+function get_volume_info ()
|
||||||
|
+{
|
||||||
|
+ local var=$1
|
||||||
|
+ $CLI_1 volume info $V0 | grep "^$var" | sed 's/.*: //'
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+cleanup;
|
||||||
|
+
|
||||||
|
+TEST verify_lvm_version
|
||||||
|
+TEST launch_cluster 2
|
||||||
|
+TEST setup_lvm 2
|
||||||
|
+
|
||||||
|
+TEST $CLI_1 peer probe $H2;
|
||||||
|
+EXPECT_WITHIN $PROBE_TIMEOUT 1 peer_count;
|
||||||
|
+
|
||||||
|
+TEST $CLI_1 volume create $V0 $H1:$L1 $H2:$L2
|
||||||
|
+EXPECT "$V0" get_volume_info 'Volume Name';
|
||||||
|
+EXPECT 'Created' get_volume_info 'Status';
|
||||||
|
+
|
||||||
|
+TEST $CLI_1 volume start $V0
|
||||||
|
+EXPECT 'Started' get_volume_info 'Status';
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+# Setting system limit
|
||||||
|
+TEST $CLI_1 snapshot config activate-on-create enable
|
||||||
|
+
|
||||||
|
+TEST $CLI_1 snapshot create snap1 $V0 no-timestamp description "test"
|
||||||
|
+TEST kill_glusterd 1
|
||||||
|
+#deactivate snapshot for changing snap version, so that handshake will
|
||||||
|
+#happen when glusterd is restarted
|
||||||
|
+TEST $CLI_2 snapshot deactivate snap1
|
||||||
|
+TEST start_glusterd 1
|
||||||
|
+
|
||||||
|
+#Wait till handshake complete
|
||||||
|
+EXPECT_WITHIN ${PROCESS_UP_TIMEOUT} 'Stopped' snapshot_status snap1
|
||||||
|
+
|
||||||
|
+#Delete the snapshot, without this fix, delete will lead to assertion failure
|
||||||
|
+$CLI_1 snapshot delete all
|
||||||
|
+EXPECT '0' get_snap_count CLI_1;
|
||||||
|
+cleanup;
|
||||||
|
+
|
||||||
|
diff --git a/xlators/mgmt/glusterd/src/glusterd-snapshot-utils.c b/xlators/mgmt/glusterd/src/glusterd-snapshot-utils.c
|
||||||
|
index ad206f6..48cf326 100644
|
||||||
|
--- a/xlators/mgmt/glusterd/src/glusterd-snapshot-utils.c
|
||||||
|
+++ b/xlators/mgmt/glusterd/src/glusterd-snapshot-utils.c
|
||||||
|
@@ -766,7 +766,7 @@ glusterd_add_snap_to_dict (glusterd_snap_t *snap, dict_t *peer_data,
|
||||||
|
}
|
||||||
|
|
||||||
|
if (snap->description) {
|
||||||
|
- snprintf (buf, sizeof(buf), "%s.snapid", prefix);
|
||||||
|
+ snprintf (buf, sizeof(buf), "%s.description", prefix);
|
||||||
|
ret = dict_set_dynstr_with_alloc (peer_data, buf,
|
||||||
|
snap->description);
|
||||||
|
if (ret) {
|
||||||
|
@@ -1551,6 +1551,7 @@ glusterd_import_friend_snap (dict_t *peer_data, int32_t snap_count,
|
||||||
|
{
|
||||||
|
char buf[NAME_MAX] = "";
|
||||||
|
char prefix[NAME_MAX] = "";
|
||||||
|
+ char *description = NULL;
|
||||||
|
dict_t *dict = NULL;
|
||||||
|
glusterd_snap_t *snap = NULL;
|
||||||
|
glusterd_volinfo_t *snap_vol = NULL;
|
||||||
|
@@ -1590,8 +1591,18 @@ glusterd_import_friend_snap (dict_t *peer_data, int32_t snap_count,
|
||||||
|
strncpy (snap->snapname, peer_snap_name, sizeof (snap->snapname) - 1);
|
||||||
|
gf_uuid_parse (peer_snap_id, snap->snap_id);
|
||||||
|
|
||||||
|
- snprintf (buf, sizeof(buf), "%s.snapid", prefix);
|
||||||
|
- ret = dict_get_str (peer_data, buf, &snap->description);
|
||||||
|
+ snprintf (buf, sizeof(buf), "%s.description", prefix);
|
||||||
|
+ ret = dict_get_str (peer_data, buf, &description);
|
||||||
|
+ if (ret == 0 && description) {
|
||||||
|
+ snap->description = gf_strdup (description);
|
||||||
|
+ if (snap->description == NULL) {
|
||||||
|
+ gf_msg (this->name, GF_LOG_ERROR, 0,
|
||||||
|
+ GD_MSG_SNAP_CREATION_FAIL,
|
||||||
|
+ "Saving the Snapshot Description Failed");
|
||||||
|
+ ret = -1;
|
||||||
|
+ goto out;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
|
||||||
|
snprintf (buf, sizeof(buf), "%s.time_stamp", prefix);
|
||||||
|
ret = dict_get_int64 (peer_data, buf, &snap->time_stamp);
|
||||||
|
--
|
||||||
|
1.8.3.1
|
||||||
|
|
@ -0,0 +1,44 @@
|
|||||||
|
From 8e616a6badedec070098c2bc324e566b1a5d34b1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mohammed Rafi KC <rkavunga@redhat.com>
|
||||||
|
Date: Sat, 18 Aug 2018 19:40:46 +0530
|
||||||
|
Subject: [PATCH 354/359] snapshot:Fix wrong dictionary key in snapshot cleanup
|
||||||
|
code
|
||||||
|
|
||||||
|
Snapshot was designed to support multiple volume snapshot,
|
||||||
|
hence the volume name keys are labelled with volume count.
|
||||||
|
So the volume key should have a volume count appended with
|
||||||
|
key
|
||||||
|
|
||||||
|
>Change-Id: I044d73fc86db0e662dc914669aecfb82a6476fb5
|
||||||
|
>fixes: bz#1618004
|
||||||
|
>Signed-off-by: Mohammed Rafi KC <rkavunga@redhat.com>
|
||||||
|
|
||||||
|
upstream patch: https://review.gluster.org/#/c/glusterfs/+/20854/
|
||||||
|
|
||||||
|
Change-Id: I044d73fc86db0e662dc914669aecfb82a6476fb5
|
||||||
|
BUG: 1615578
|
||||||
|
Signed-off-by: Sanju Rakonde <srakonde@redhat.com>
|
||||||
|
Reviewed-on: https://code.engineering.redhat.com/gerrit/147524
|
||||||
|
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
||||||
|
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
|
||||||
|
---
|
||||||
|
xlators/mgmt/glusterd/src/glusterd-snapshot.c | 3 ++-
|
||||||
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/xlators/mgmt/glusterd/src/glusterd-snapshot.c b/xlators/mgmt/glusterd/src/glusterd-snapshot.c
|
||||||
|
index fdd5012..830a67f 100644
|
||||||
|
--- a/xlators/mgmt/glusterd/src/glusterd-snapshot.c
|
||||||
|
+++ b/xlators/mgmt/glusterd/src/glusterd-snapshot.c
|
||||||
|
@@ -6529,7 +6529,8 @@ glusterd_do_snap_cleanup (dict_t *dict, char **op_errstr, dict_t *rsp_dict)
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
- ret = dict_get_str (dict, "volname", &volname);
|
||||||
|
+ /* As of now snapshot of multiple volumes are not supported */
|
||||||
|
+ ret = dict_get_str (dict, "volname1", &volname);
|
||||||
|
if (ret) {
|
||||||
|
gf_msg ("glusterd", GF_LOG_ERROR, 0,
|
||||||
|
GD_MSG_DICT_GET_FAILED, "Unable to get"
|
||||||
|
--
|
||||||
|
1.8.3.1
|
||||||
|
|
38
0355-server-protocol-resolve-memory-leak.patch
Normal file
38
0355-server-protocol-resolve-memory-leak.patch
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
From 5f7e699d159577a41a35085648669ea56fa80bf0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Amar Tumballi <amarts@redhat.com>
|
||||||
|
Date: Tue, 21 Aug 2018 10:54:46 +0530
|
||||||
|
Subject: [PATCH 355/359] server-protocol: resolve memory leak
|
||||||
|
|
||||||
|
This leak got introduced as part of d15e6e444 where 'alloca()' calls
|
||||||
|
were removed in server protocol. Notice that only 'lookup()' has
|
||||||
|
two places where there is return, hence we needed free in 2 places,
|
||||||
|
not 1.
|
||||||
|
|
||||||
|
BUG: 1619416
|
||||||
|
Change-Id: I32c20a33d7a1c8862588b50455765a92095469a6
|
||||||
|
Signed-off-by: Amar Tumballi <amarts@redhat.com>
|
||||||
|
Reviewed-on: https://code.engineering.redhat.com/gerrit/147574
|
||||||
|
Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
|
||||||
|
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
||||||
|
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
|
||||||
|
---
|
||||||
|
xlators/protocol/server/src/server-rpc-fops.c | 3 +++
|
||||||
|
1 file changed, 3 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/xlators/protocol/server/src/server-rpc-fops.c b/xlators/protocol/server/src/server-rpc-fops.c
|
||||||
|
index a7fd3b5..35d0887 100644
|
||||||
|
--- a/xlators/protocol/server/src/server-rpc-fops.c
|
||||||
|
+++ b/xlators/protocol/server/src/server-rpc-fops.c
|
||||||
|
@@ -5871,6 +5871,9 @@ server3_3_lookup (rpcsvc_request_t *req)
|
||||||
|
ret = 0;
|
||||||
|
resolve_and_resume (frame, server_lookup_resume);
|
||||||
|
|
||||||
|
+ free (args.bname);
|
||||||
|
+ free (args.xdata.xdata_val);
|
||||||
|
+
|
||||||
|
return ret;
|
||||||
|
out:
|
||||||
|
free (args.bname);
|
||||||
|
--
|
||||||
|
1.8.3.1
|
||||||
|
|
65
0356-io-stats-sanitize-the-dump-path-further.patch
Normal file
65
0356-io-stats-sanitize-the-dump-path-further.patch
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
From dba81543259bbb4b590918477156dfb68812dd8a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Amar Tumballi <amarts@redhat.com>
|
||||||
|
Date: Tue, 21 Aug 2018 19:33:08 +0530
|
||||||
|
Subject: [PATCH 356/359] io-stats: sanitize the dump path further
|
||||||
|
|
||||||
|
In the previous patch, while addressing the comment on review,
|
||||||
|
a "/" at the end of the "/var/run/gluster" directory was missed out.
|
||||||
|
|
||||||
|
Also noticed that the logic to convert the '/' to '-' for sanity
|
||||||
|
of the path needed to change.
|
||||||
|
|
||||||
|
Testing: Ran the tests which marked the bug as FailedQA,
|
||||||
|
and also validated the originally reported issue, and now we see
|
||||||
|
a specific log when not so clean path is given as the value to
|
||||||
|
this xattr.
|
||||||
|
|
||||||
|
BUG: 1605086
|
||||||
|
Change-Id: Ia8397ecd5841a72d0daca0106557e1226c293e35
|
||||||
|
Signed-off-by: Amar Tumballi <amarts@redhat.com>
|
||||||
|
Reviewed-on: https://code.engineering.redhat.com/gerrit/147644
|
||||||
|
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
|
||||||
|
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
|
||||||
|
Tested-by: Atin Mukherjee <amukherj@redhat.com>
|
||||||
|
---
|
||||||
|
xlators/debug/io-stats/src/io-stats.c | 11 ++++++-----
|
||||||
|
1 file changed, 6 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/xlators/debug/io-stats/src/io-stats.c b/xlators/debug/io-stats/src/io-stats.c
|
||||||
|
index 868890f..16a11df 100644
|
||||||
|
--- a/xlators/debug/io-stats/src/io-stats.c
|
||||||
|
+++ b/xlators/debug/io-stats/src/io-stats.c
|
||||||
|
@@ -3014,7 +3014,7 @@ conditional_dump (dict_t *dict, char *key, data_t *value, void *data)
|
||||||
|
char *filename = NULL;
|
||||||
|
FILE *logfp = NULL;
|
||||||
|
struct ios_dump_args args = {0};
|
||||||
|
- int pid, namelen;
|
||||||
|
+ int pid, namelen, dirlen;
|
||||||
|
char dump_key[100];
|
||||||
|
char *slash_ptr = NULL;
|
||||||
|
char *path_in_value = NULL;
|
||||||
|
@@ -3039,16 +3039,17 @@ conditional_dump (dict_t *dict, char *key, data_t *value, void *data)
|
||||||
|
"%s: no \"../\" allowed in path", path_in_value);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
- namelen = (strlen (IOS_STATS_DUMP_DIR) + value->len +
|
||||||
|
- strlen (this->name) + 2); /* '.' and '\0' */
|
||||||
|
+ dirlen = strlen (IOS_STATS_DUMP_DIR);
|
||||||
|
+ namelen = (dirlen + value->len + strlen (this->name) + 3);
|
||||||
|
+ /* +3 for '/', '.' and '\0' added in snprintf below*/
|
||||||
|
|
||||||
|
filename = alloca0 (namelen);
|
||||||
|
|
||||||
|
- snprintf (filename, namelen, "%s%s.%s", IOS_STATS_DUMP_DIR,
|
||||||
|
+ snprintf (filename, namelen, "%s/%s.%s", IOS_STATS_DUMP_DIR,
|
||||||
|
path_in_value, this->name);
|
||||||
|
|
||||||
|
/* convert any slashes to '-' so that fopen works correctly */
|
||||||
|
- slash_ptr = strchr (filename + value->len + 1, '/');
|
||||||
|
+ slash_ptr = strchr (filename + dirlen + 1, '/');
|
||||||
|
while (slash_ptr) {
|
||||||
|
*slash_ptr = '-';
|
||||||
|
slash_ptr = strchr (slash_ptr, '/');
|
||||||
|
--
|
||||||
|
1.8.3.1
|
||||||
|
|
@ -0,0 +1,76 @@
|
|||||||
|
From 395a535ec778f34e0b17150a6a37ac25790f760d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sunny Kumar <sunkumar@redhat.com>
|
||||||
|
Date: Wed, 22 Aug 2018 02:08:40 +0530
|
||||||
|
Subject: [PATCH 357/359] snapshot : fix snapshot status failure due to symlink
|
||||||
|
problem
|
||||||
|
|
||||||
|
Problems : 1. Snapshot status for individual snapshots were failing after OS
|
||||||
|
upgrade from RHEL6 to RHEL7.
|
||||||
|
2. Post upgrade snapshot creation of cloned volume was failing.
|
||||||
|
|
||||||
|
Root Cause : When OS upgrade is from RHEL6 to RHEL7 there is difference in
|
||||||
|
symlink (/var/run) between these two versions.
|
||||||
|
Basically when (/var/run) is symlinked to /run, mount command
|
||||||
|
resolves path and mounts it. But at the same time call to
|
||||||
|
those functions fails who depends on absolute path.
|
||||||
|
(like strcmp in glusterd_get_mnt_entry_info)
|
||||||
|
|
||||||
|
Solution : Resolve the input path to absolute path before calling these
|
||||||
|
functions.
|
||||||
|
|
||||||
|
Test : Tested on same setup where issue was reported. After this
|
||||||
|
patch snapshot issues are completely resolved.
|
||||||
|
|
||||||
|
Upstream Patch : https://review.gluster.org/#/c/glusterfs/+/20885/
|
||||||
|
Change-Id: I5ba57998cea614c6072709f52f42a57562018844
|
||||||
|
BUG: 1619538
|
||||||
|
|
||||||
|
>fixes: bz#1619843
|
||||||
|
>Signed-off-by: Sunny Kumar <sunkumar@redhat.com>
|
||||||
|
|
||||||
|
Signed-off-by: Sunny Kumar <sunkumar@redhat.com>
|
||||||
|
Change-Id: I6bc045f0baa6c858da43d6c8324ae690d76dc842
|
||||||
|
Reviewed-on: https://code.engineering.redhat.com/gerrit/147812
|
||||||
|
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
||||||
|
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
|
||||||
|
---
|
||||||
|
xlators/mgmt/glusterd/src/glusterd-utils.c | 10 +++++++++-
|
||||||
|
1 file changed, 9 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c
|
||||||
|
index 1752425..136a032 100644
|
||||||
|
--- a/xlators/mgmt/glusterd/src/glusterd-utils.c
|
||||||
|
+++ b/xlators/mgmt/glusterd/src/glusterd-utils.c
|
||||||
|
@@ -7030,6 +7030,7 @@ glusterd_get_mnt_entry_info (char *mnt_pt, char *buff, int buflen,
|
||||||
|
{
|
||||||
|
struct mntent *entry = NULL;
|
||||||
|
FILE *mtab = NULL;
|
||||||
|
+ char abspath[PATH_MAX] = "";
|
||||||
|
|
||||||
|
GF_ASSERT (mnt_pt);
|
||||||
|
GF_ASSERT (buff);
|
||||||
|
@@ -7039,13 +7040,20 @@ glusterd_get_mnt_entry_info (char *mnt_pt, char *buff, int buflen,
|
||||||
|
if (!mtab)
|
||||||
|
goto out;
|
||||||
|
|
||||||
|
+ if (!realpath (mnt_pt, abspath)) {
|
||||||
|
+ gf_msg (THIS->name, GF_LOG_ERROR, 0,
|
||||||
|
+ GD_MSG_MNTENTRY_GET_FAIL,
|
||||||
|
+ "realpath () failed for path %s", mnt_pt);
|
||||||
|
+ goto out;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
entry = getmntent_r (mtab, entry_ptr, buff, buflen);
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
if (!entry)
|
||||||
|
goto out;
|
||||||
|
|
||||||
|
- if (!strcmp (entry->mnt_dir, mnt_pt) &&
|
||||||
|
+ if (!strcmp (entry->mnt_dir, abspath) &&
|
||||||
|
strcmp (entry->mnt_type, "rootfs"))
|
||||||
|
break;
|
||||||
|
entry = getmntent_r (mtab, entry_ptr, buff, buflen);
|
||||||
|
--
|
||||||
|
1.8.3.1
|
||||||
|
|
101
0358-glusterd-glusterd_brick_start-shouldn-t-try-to-bring.patch
Normal file
101
0358-glusterd-glusterd_brick_start-shouldn-t-try-to-bring.patch
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
From 8f1a849968242aa3c53a05fbf1b0647a905e9cdd Mon Sep 17 00:00:00 2001
|
||||||
|
From: Atin Mukherjee <amukherj@redhat.com>
|
||||||
|
Date: Thu, 23 Aug 2018 12:12:36 +0530
|
||||||
|
Subject: [PATCH 358/359] glusterd: glusterd_brick_start shouldn't try to bring
|
||||||
|
up brick if only_connect is true
|
||||||
|
|
||||||
|
With the latest refactoring in glusterd_brick_start () function in case
|
||||||
|
we run into a situation where is_gf_service_running () return a valid
|
||||||
|
pid which is running but doesn't belong to a gluster process, even in
|
||||||
|
case of only_connect flag passed as gf_true we'd end up trying to start
|
||||||
|
a brick which would cause a deadlock in brick multiplexing as both
|
||||||
|
glusterd_restart_bricks () and glusterd_do_volume_quorum_action () would
|
||||||
|
cause context switching with each other for the same brick. The
|
||||||
|
following bt shows the same:
|
||||||
|
|
||||||
|
(gdb) t a a bt
|
||||||
|
|
||||||
|
Thread 8 (Thread 0x7fcced48a700 (LWP 11959)):
|
||||||
|
srch_vol=srch_vol@entry=0xbe0410, comp_vol=comp_vol@entry=0xc03680,
|
||||||
|
brickinfo=brickinfo@entry=0xc14ef0) at glusterd-utils.c:5834
|
||||||
|
brickinfo=0xc14ef0, volinfo=0xc03680, conf=<optimized out>)
|
||||||
|
at glusterd-utils.c:5902
|
||||||
|
brickinfo=brickinfo@entry=0xc14ef0, wait=wait@entry=_gf_false,
|
||||||
|
only_connect=only_connect@entry=_gf_true) at glusterd-utils.c:6251
|
||||||
|
volinfo=0xc03680, meets_quorum=_gf_true) at glusterd-server-quorum.c:402
|
||||||
|
at glusterd-server-quorum.c:443
|
||||||
|
iov=iov@entry=0x7fcce0004040, count=count@entry=1,
|
||||||
|
myframe=myframe@entry=0x7fcce00023a0) at glusterd-rpc-ops.c:542
|
||||||
|
iov=0x7fcce0004040, count=1, myframe=0x7fcce00023a0,
|
||||||
|
fn=0x7fccf12403d0 <__glusterd_friend_add_cbk>) at glusterd-rpc-ops.c:223
|
||||||
|
---Type <return> to continue, or q <return> to quit---
|
||||||
|
at rpc-transport.c:538
|
||||||
|
|
||||||
|
Thread 7 (Thread 0x7fccedc8b700 (LWP 11958)):
|
||||||
|
|
||||||
|
Thread 6 (Thread 0x7fccf1d67700 (LWP 11877)):
|
||||||
|
brickinfo=brickinfo@entry=0xc14ef0) at glusterd-utils.c:5834
|
||||||
|
at glusterd-utils.c:6251
|
||||||
|
|
||||||
|
Thread 5 (Thread 0x7fccf2568700 (LWP 11876)):
|
||||||
|
|
||||||
|
Thread 4 (Thread 0x7fccf2d69700 (LWP 11875)):
|
||||||
|
|
||||||
|
Thread 3 (Thread 0x7fccf356a700 (LWP 11874)):
|
||||||
|
|
||||||
|
Thread 2 (Thread 0x7fccf3d6b700 (LWP 11873)):
|
||||||
|
---Type <return> to continue, or q <return> to quit---
|
||||||
|
|
||||||
|
Thread 1 (Thread 0x7fccf68a8780 (LWP 11872)):
|
||||||
|
|
||||||
|
Fix:
|
||||||
|
|
||||||
|
The solution is to ensure we don't restart bricks if only_connect is
|
||||||
|
true and just ensure that the brick is attempted to be connected.
|
||||||
|
|
||||||
|
Test:
|
||||||
|
|
||||||
|
Simulated a code change to ensure gf_is_service_running () always return
|
||||||
|
to true to hit the scenario.
|
||||||
|
|
||||||
|
>upstream patch : https://review.gluster.org/#/c/glusterfs/+/20935
|
||||||
|
|
||||||
|
>Change-Id: Iec184e6c9e8aabef931d310f931f4d7a580f0f48
|
||||||
|
>Fixes: bz#1620544
|
||||||
|
>Signed-off-by: Atin Mukherjee <amukherj@redhat.com>
|
||||||
|
|
||||||
|
Change-Id: Iec184e6c9e8aabef931d310f931f4d7a580f0f48
|
||||||
|
BUG: 1620469
|
||||||
|
Signed-off-by: Atin Mukherjee <amukherj@redhat.com>
|
||||||
|
Reviewed-on: https://code.engineering.redhat.com/gerrit/147888
|
||||||
|
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
||||||
|
Reviewed-by: Sunil Kumar Heggodu Gopala Acharya <sheggodu@redhat.com>
|
||||||
|
---
|
||||||
|
xlators/mgmt/glusterd/src/glusterd-utils.c | 4 ++++
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c
|
||||||
|
index 136a032..b9e8d8d 100644
|
||||||
|
--- a/xlators/mgmt/glusterd/src/glusterd-utils.c
|
||||||
|
+++ b/xlators/mgmt/glusterd/src/glusterd-utils.c
|
||||||
|
@@ -6173,6 +6173,8 @@ glusterd_brick_start (glusterd_volinfo_t *volinfo,
|
||||||
|
if (sys_access (pidfile , R_OK) == 0) {
|
||||||
|
sys_unlink (pidfile);
|
||||||
|
}
|
||||||
|
+ if (only_connect)
|
||||||
|
+ return 0;
|
||||||
|
goto run;
|
||||||
|
}
|
||||||
|
GF_FREE (brickpath);
|
||||||
|
@@ -6187,6 +6189,8 @@ glusterd_brick_start (glusterd_volinfo_t *volinfo,
|
||||||
|
if (sys_access (pidfile , R_OK) == 0) {
|
||||||
|
sys_unlink (pidfile);
|
||||||
|
}
|
||||||
|
+ if (only_connect)
|
||||||
|
+ return 0;
|
||||||
|
goto run;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
--
|
||||||
|
1.8.3.1
|
||||||
|
|
137
0359-storage-posix-Increment-trusted.pgfid-in-posix_mknod.patch
Normal file
137
0359-storage-posix-Increment-trusted.pgfid-in-posix_mknod.patch
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
From 5b628662aa823770179c5592c182dd8b6acc9b1d Mon Sep 17 00:00:00 2001
|
||||||
|
From: N Balachandran <nbalacha@redhat.com>
|
||||||
|
Date: Thu, 23 Aug 2018 18:38:01 +0530
|
||||||
|
Subject: [PATCH 359/359] storage/posix: Increment trusted.pgfid in posix_mknod
|
||||||
|
|
||||||
|
The value of trusted.pgfid.xx was always set to 1
|
||||||
|
in posix_mknod. This is incorrect if posix_mknod
|
||||||
|
calls posix_create_link_if_gfid_exists.
|
||||||
|
|
||||||
|
upstream patch: https://review.gluster.org/#/c/glusterfs/+/20875/
|
||||||
|
|
||||||
|
> Change-Id: Ibe87ca6f155846b9a7c7abbfb1eb8b6a99a5eb68
|
||||||
|
> fixes: bz#1619720
|
||||||
|
> Signed-off-by: N Balachandran <nbalacha@redhat.com>
|
||||||
|
|
||||||
|
Change-Id: Iaa7ad44b918eed28718f62c312f2d8edf01b9256
|
||||||
|
BUG: 1620765
|
||||||
|
Signed-off-by: N Balachandran <nbalacha@redhat.com>
|
||||||
|
Reviewed-on: https://code.engineering.redhat.com/gerrit/147891
|
||||||
|
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
|
||||||
|
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
||||||
|
---
|
||||||
|
tests/bugs/posix/bug-1619720.t | 57 +++++++++++++++++++++++++++++++++++++++
|
||||||
|
xlators/storage/posix/src/posix.c | 18 ++++++++++---
|
||||||
|
2 files changed, 71 insertions(+), 4 deletions(-)
|
||||||
|
create mode 100755 tests/bugs/posix/bug-1619720.t
|
||||||
|
|
||||||
|
diff --git a/tests/bugs/posix/bug-1619720.t b/tests/bugs/posix/bug-1619720.t
|
||||||
|
new file mode 100755
|
||||||
|
index 0000000..5e0d0f7
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/bugs/posix/bug-1619720.t
|
||||||
|
@@ -0,0 +1,57 @@
|
||||||
|
+#!/bin/bash
|
||||||
|
+
|
||||||
|
+. $(dirname $0)/../../include.rc
|
||||||
|
+. $(dirname $0)/../../dht.rc
|
||||||
|
+
|
||||||
|
+cleanup;
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+# Test steps:
|
||||||
|
+# The test checks to make sure that the trusted.pgfid.xx xattr is set on
|
||||||
|
+# both the linkto and data files post the final rename.
|
||||||
|
+# The test creates files file-1 and file-3 so that src_hashed = dst_hashed,
|
||||||
|
+# src_cached = dst_cached and xxx_hashed != xxx_cached.
|
||||||
|
+# It then renames file-1 to file-3 which triggers the posix_mknod call
|
||||||
|
+# which updates the trusted.pgfid.xx xattr.
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+TEST glusterd
|
||||||
|
+TEST pidof glusterd
|
||||||
|
+
|
||||||
|
+TEST $CLI volume create $V0 $H0:$B0/${V0}0 $H0:$B0/${V0}1
|
||||||
|
+TEST $CLI volume start $V0
|
||||||
|
+TEST $CLI volume set $V0 storage.build-pgfid on
|
||||||
|
+
|
||||||
|
+## Mount FUSE
|
||||||
|
+TEST glusterfs -s $H0 --volfile-id $V0 $M0;
|
||||||
|
+
|
||||||
|
+TEST mkdir $M0/tmp
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+# Not the best way to do this but I need files which hash to the same subvol and
|
||||||
|
+# whose cached subvols are the same.
|
||||||
|
+# In a 2 subvol distributed volume, file-{1,3} hash to the same subvol.
|
||||||
|
+# file-2 will hash to the other subvol
|
||||||
|
+
|
||||||
|
+TEST touch $M0/tmp/file-2
|
||||||
|
+pgfid_xattr_name=$(getfattr -m "trusted.pgfid.*" $B0/${V0}1/tmp/file-2 | grep "trusted.pgfid")
|
||||||
|
+echo $pgfid_xattr_name
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+TEST mv $M0/tmp/file-2 $M0/tmp/file-1
|
||||||
|
+TEST touch $M0/tmp/file-2
|
||||||
|
+TEST mv $M0/tmp/file-2 $M0/tmp/file-3
|
||||||
|
+
|
||||||
|
+# At this point, both the file-1 and file-3 data files exist on one subvol
|
||||||
|
+# and both linkto files on the other
|
||||||
|
+
|
||||||
|
+TEST mv -f $M0/tmp/file-1 $M0/tmp/file-3
|
||||||
|
+
|
||||||
|
+TEST getfattr -n $pgfid_xattr_name $B0/${V0}0/tmp/file-3
|
||||||
|
+TEST getfattr -n $pgfid_xattr_name $B0/${V0}1/tmp/file-3
|
||||||
|
+
|
||||||
|
+# Not required for the test but an extra check if required.
|
||||||
|
+# The linkto file was not renamed Without the fix.
|
||||||
|
+#TEST mv $M0/tmp/file-3 $M0/tmp/file-6
|
||||||
|
+cleanup;
|
||||||
|
diff --git a/xlators/storage/posix/src/posix.c b/xlators/storage/posix/src/posix.c
|
||||||
|
index 28d2e6f..5088469 100644
|
||||||
|
--- a/xlators/storage/posix/src/posix.c
|
||||||
|
+++ b/xlators/storage/posix/src/posix.c
|
||||||
|
@@ -1427,6 +1427,7 @@ posix_mknod (call_frame_t *frame, xlator_t *this,
|
||||||
|
gf_boolean_t entry_created = _gf_false, gfid_set = _gf_false;
|
||||||
|
gf_boolean_t linked = _gf_false;
|
||||||
|
gf_loglevel_t level = GF_LOG_NONE;
|
||||||
|
+ posix_inode_ctx_t *ctx = NULL;
|
||||||
|
|
||||||
|
DECLARE_OLD_FS_ID_VAR;
|
||||||
|
|
||||||
|
@@ -1556,10 +1557,20 @@ post_op:
|
||||||
|
if (priv->update_pgfid_nlinks) {
|
||||||
|
MAKE_PGFID_XATTR_KEY (pgfid_xattr_key, PGFID_XATTR_KEY_PREFIX,
|
||||||
|
loc->pargfid);
|
||||||
|
- nlink_samepgfid = 1;
|
||||||
|
+ op_ret = posix_inode_ctx_get_all (loc->inode, this, &ctx);
|
||||||
|
+ if (op_ret < 0) {
|
||||||
|
+ op_errno = ENOMEM;
|
||||||
|
+ goto out;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- SET_PGFID_XATTR (real_path, pgfid_xattr_key, nlink_samepgfid,
|
||||||
|
- XATTR_CREATE, op_ret, this, ignore);
|
||||||
|
+ pthread_mutex_lock (&ctx->pgfid_lock);
|
||||||
|
+ {
|
||||||
|
+ LINK_MODIFY_PGFID_XATTR (real_path, pgfid_xattr_key,
|
||||||
|
+ nlink_samepgfid, 0, op_ret,
|
||||||
|
+ this, unlock);
|
||||||
|
+ }
|
||||||
|
+unlock:
|
||||||
|
+ pthread_mutex_unlock (&ctx->pgfid_lock);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (priv->gfid2path) {
|
||||||
|
@@ -1567,7 +1578,6 @@ post_op:
|
||||||
|
loc->name);
|
||||||
|
}
|
||||||
|
|
||||||
|
-ignore:
|
||||||
|
op_ret = posix_entry_create_xattr_set (this, real_path, xdata);
|
||||||
|
if (op_ret) {
|
||||||
|
if (errno != EEXIST)
|
||||||
|
--
|
||||||
|
1.8.3.1
|
||||||
|
|
@ -192,7 +192,7 @@ Release: 0.1%{?prereltag:.%{prereltag}}%{?dist}
|
|||||||
%else
|
%else
|
||||||
Name: glusterfs
|
Name: glusterfs
|
||||||
Version: 3.12.2
|
Version: 3.12.2
|
||||||
Release: 16%{?dist}
|
Release: 17%{?dist}
|
||||||
%endif
|
%endif
|
||||||
License: GPLv2 or LGPLv3+
|
License: GPLv2 or LGPLv3+
|
||||||
Group: System Environment/Base
|
Group: System Environment/Base
|
||||||
@ -616,6 +616,14 @@ Patch0348: 0348-posix-disable-block-and-character-files.patch
|
|||||||
Patch0349: 0349-posix-don-t-allow-.-path-in-name.patch
|
Patch0349: 0349-posix-don-t-allow-.-path-in-name.patch
|
||||||
Patch0350: 0350-cluster-dht-fix-inode-ref-management-in-dht_heal_pat.patch
|
Patch0350: 0350-cluster-dht-fix-inode-ref-management-in-dht_heal_pat.patch
|
||||||
Patch0351: 0351-cluster-dht-Fixed-rebalanced-files.patch
|
Patch0351: 0351-cluster-dht-Fixed-rebalanced-files.patch
|
||||||
|
Patch0352: 0352-snapshot-Fail-snapshot-creation-if-an-empty-descript.patch
|
||||||
|
Patch0353: 0353-snapshot-handshake-store-description-after-strdup.patch
|
||||||
|
Patch0354: 0354-snapshot-Fix-wrong-dictionary-key-in-snapshot-cleanu.patch
|
||||||
|
Patch0355: 0355-server-protocol-resolve-memory-leak.patch
|
||||||
|
Patch0356: 0356-io-stats-sanitize-the-dump-path-further.patch
|
||||||
|
Patch0357: 0357-snapshot-fix-snapshot-status-failure-due-to-symlink-.patch
|
||||||
|
Patch0358: 0358-glusterd-glusterd_brick_start-shouldn-t-try-to-bring.patch
|
||||||
|
Patch0359: 0359-storage-posix-Increment-trusted.pgfid-in-posix_mknod.patch
|
||||||
|
|
||||||
%description
|
%description
|
||||||
GlusterFS is a distributed file-system capable of scaling to several
|
GlusterFS is a distributed file-system capable of scaling to several
|
||||||
@ -2564,6 +2572,9 @@ fi
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Aug 23 2018 Milind Changire <mchangir@redhat.com> - 3.12.2-17
|
||||||
|
- fixes bugs bz#1615578 bz#1619416 bz#1619538 bz#1620469 bz#1620765
|
||||||
|
|
||||||
* Tue Aug 14 2018 Milind Changire <mchangir@redhat.com> - 3.12.2-16
|
* Tue Aug 14 2018 Milind Changire <mchangir@redhat.com> - 3.12.2-16
|
||||||
- fixes bugs bz#1569657 bz#1608352 bz#1609163 bz#1609724 bz#1610825
|
- fixes bugs bz#1569657 bz#1608352 bz#1609163 bz#1609724 bz#1610825
|
||||||
bz#1611151 bz#1612098 bz#1615338 bz#1615440
|
bz#1611151 bz#1612098 bz#1615338 bz#1615440
|
||||||
|
Loading…
Reference in New Issue
Block a user