diff options
author | Prashanth Pai <ppai@redhat.com> | 2017-08-09 16:34:39 +0530 |
---|---|---|
committer | Pranith Kumar Karampuri <pkarampu@redhat.com> | 2017-08-23 13:09:47 +0000 |
commit | ee3d9ac7f2db3a4aa9186e08b5a1db62c3270188 (patch) | |
tree | 70fce6f1aabcc57d465c427bd292e9936928a259 | |
parent | d165ffd7a5e19fa6d0c2f36be9b47280e3df8443 (diff) | |
download | glusterfs-ee3d9ac7f2db3a4aa9186e08b5a1db62c3270188.tar.gz glusterfs-ee3d9ac7f2db3a4aa9186e08b5a1db62c3270188.tar.xz glusterfs-ee3d9ac7f2db3a4aa9186e08b5a1db62c3270188.zip |
glusterd: do not create .glusterfs/indices
glusterd shouldn't concern itself with creating directories specific to
certain xlators.
The index xlator will now proceed creating './glusterfs/indices' dir
only if the parent '.glusterfs' directory exists, which still fixes the
original problem reported i.e 'volume start force' command shouldn't
create brick path if it doesn't exist (BUG 1457202)
This reverts most of the changes done by the commit
b58a15948fb3fc37b6c0b70171482f50ed957f42
Change-Id: I7fc52ad64dce220e336c218fb4d85933ca2e61c0
Signed-off-by: Prashanth Pai <ppai@redhat.com>
Reviewed-on: https://review.gluster.org/18003
Smoke: Gluster Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
Reviewed-by: Jeff Darcy <jeff@pl.atyp.us>
Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
-rw-r--r-- | tests/basic/afr/resolve.t | 3 | ||||
-rw-r--r-- | tests/bugs/replicate/bug-1130892.t | 3 | ||||
-rw-r--r-- | tests/bugs/replicate/bug-1402730.t | 3 | ||||
-rwxr-xr-x | tests/bugs/replicate/bug-830665.t | 3 | ||||
-rw-r--r-- | xlators/features/index/src/index.c | 13 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 26 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.h | 11 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-volgen.c | 4 |
8 files changed, 29 insertions, 37 deletions
diff --git a/tests/basic/afr/resolve.t b/tests/basic/afr/resolve.t index f7351f843b..a741eee6e5 100644 --- a/tests/basic/afr/resolve.t +++ b/tests/basic/afr/resolve.t @@ -24,9 +24,8 @@ TEST kill_brick $V0 $H0 $B0/${V0}0 rm -rf $B0/${V0}0/.glusterfs $B0/${V0}0/a #Ideally, disk replacement is done using reset-brick or replace-brick gluster CLI -#which will create .glusterfs/indices folder. +#which will create .glusterfs folder. mkdir $B0/${V0}0/.glusterfs && chmod 600 $B0/${V0}0/.glusterfs -mkdir $B0/${V0}0/.glusterfs/indices && chmod 600 $B0/${V0}0/.glusterfs/indices TEST $CLI volume start $V0 force EXPECT_WITHIN $CHILD_UP_TIMEOUT "1" afr_child_up_status_meta $M0 $V0-replicate-0 0 diff --git a/tests/bugs/replicate/bug-1130892.t b/tests/bugs/replicate/bug-1130892.t index 9005791a59..c7988fd648 100644 --- a/tests/bugs/replicate/bug-1130892.t +++ b/tests/bugs/replicate/bug-1130892.t @@ -40,9 +40,8 @@ TEST rm -rf $B0/${V0}-1/one TEST rm -rf $B0/${V0}-1/.glusterfs #Ideally, disk replacement is done using reset-brick or replace-brick gluster CLI -#which will create .glusterfs/indices folder. +#which will create .glusterfs folder. mkdir $B0/${V0}-1/.glusterfs && chmod 600 $B0/${V0}-1/.glusterfs -mkdir $B0/${V0}-1/.glusterfs/indices && chmod 600 $B0/${V0}-1/.glusterfs/indices # Start force TEST $CLI volume start $V0 force diff --git a/tests/bugs/replicate/bug-1402730.t b/tests/bugs/replicate/bug-1402730.t index 28c6761f91..c7866df463 100644 --- a/tests/bugs/replicate/bug-1402730.t +++ b/tests/bugs/replicate/bug-1402730.t @@ -24,9 +24,8 @@ rm -rf $B0/${V0}2/* rm -rf $B0/${V0}2/.glusterfs #Ideally, disk replacement is done using reset-brick or replace-brick gluster CLI -#which will create .glusterfs/indices folder. +#which will create .glusterfs folder. mkdir $B0/${V0}2/.glusterfs && chmod 600 $B0/${V0}2/.glusterfs -mkdir $B0/${V0}2/.glusterfs/indices && chmod 600 $B0/${V0}2/.glusterfs/indices TEST $CLI volume start $V0 force diff --git a/tests/bugs/replicate/bug-830665.t b/tests/bugs/replicate/bug-830665.t index d044dae75e..acebe3ec91 100755 --- a/tests/bugs/replicate/bug-830665.t +++ b/tests/bugs/replicate/bug-830665.t @@ -77,9 +77,8 @@ volid=$(getfattr -e hex -n trusted.glusterfs.volume-id $B0/${V0}-0 2> /dev/null rm -rf $B0/${V0}-0; mkdir $B0/${V0}-0; #Ideally, disk replacement is done using reset-brick or replace-brick gluster CLI -#which will create .glusterfs/indices folder. +#which will create .glusterfs folder. mkdir $B0/${V0}-0/.glusterfs && chmod 600 $B0/${V0}-0/.glusterfs -mkdir $B0/${V0}-0/.glusterfs/indices && chmod 600 $B0/${V0}-0/.glusterfs/indices setfattr -n trusted.glusterfs.volume-id -v $volid $B0/${V0}-0 diff --git a/xlators/features/index/src/index.c b/xlators/features/index/src/index.c index 8590482a5b..12f98974fc 100644 --- a/xlators/features/index/src/index.c +++ b/xlators/features/index/src/index.c @@ -15,6 +15,7 @@ #include "common-utils.h" #include "index-messages.h" #include <ftw.h> +#include <libgen.h> /* for dirname() */ #include <signal.h> #define XATTROP_SUBDIR "xattrop" @@ -2285,6 +2286,8 @@ init (xlator_t *this) char *watchlist = NULL; char *dirtylist = NULL; char *pendinglist = NULL; + char *index_base_parent = NULL; + char *tmp = NULL; if (!this->children || this->children->next) { gf_msg (this->name, GF_LOG_ERROR, EINVAL, @@ -2336,12 +2339,14 @@ init (xlator_t *this) } GF_OPTION_INIT ("index-base", priv->index_basepath, path, out); - if (gf_lstat_dir (priv->index_basepath, NULL) != 0) { + tmp = gf_strdup(priv->index_basepath); + index_base_parent = dirname(tmp); + if (gf_lstat_dir (index_base_parent, NULL) != 0) { ret = -1; gf_msg (this->name, GF_LOG_ERROR, errno, INDEX_MSG_INDEX_DIR_CREATE_FAILED, - "Failed to find index basepath %s.", - priv->index_basepath); + "Failed to find parent dir (%s) of index basepath %s.", + index_base_parent, priv->index_basepath); goto out; } @@ -2414,6 +2419,8 @@ init (xlator_t *this) ret = 0; out: + GF_FREE(tmp); + if (ret) { if (cond_inited) pthread_cond_destroy (&priv->cond); diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index dfdd795f18..fbf192ebdb 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -1444,7 +1444,7 @@ glusterd_validate_and_create_brickpath (glusterd_brickinfo_t *brickinfo, struct stat root_st = {0,}; char msg[2048] = {0,}; gf_boolean_t is_created = _gf_false; - char index_basepath[PATH_MAX] = {0}; + char glusterfs_dir_path[PATH_MAX] = {0}; ret = sys_mkdir (brickinfo->path, 0777); if (ret) { @@ -1459,18 +1459,6 @@ glusterd_validate_and_create_brickpath (glusterd_brickinfo_t *brickinfo, is_created = _gf_true; } - glusterd_get_index_basepath (brickinfo, index_basepath, - sizeof(index_basepath)); - - ret = mkdir_p (index_basepath, 0600, _gf_true); - if (ret && (errno != EEXIST)) { - snprintf (msg, sizeof (msg), "Failed to create index " - "basepath (%s) for brick %s:%s. Reason : %s ", - index_basepath, brickinfo->hostname, - brickinfo->path, strerror (errno)); - goto out; - } - ret = sys_lstat (brickinfo->path, &brick_st); if (ret) { snprintf (msg, sizeof (msg), "lstat failed on %s. Reason : %s", @@ -1547,6 +1535,18 @@ glusterd_validate_and_create_brickpath (glusterd_brickinfo_t *brickinfo, if (ret) goto out; + /* create .glusterfs directory */ + snprintf (glusterfs_dir_path, sizeof (glusterfs_dir_path), "%s/%s", + brickinfo->path, ".glusterfs"); + ret = sys_mkdir (glusterfs_dir_path, 0600); + if (ret && (errno != EEXIST)) { + snprintf (msg, sizeof (msg), "Failed to create .glusterfs " + "directory for brick %s:%s. Reason : %s ", + brickinfo->hostname, brickinfo->path, + strerror (errno)); + goto out; + } + ret = 0; out: diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.h b/xlators/mgmt/glusterd/src/glusterd-utils.h index fce56b12e9..ce3a7787be 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.h +++ b/xlators/mgmt/glusterd/src/glusterd-utils.h @@ -874,15 +874,4 @@ glusterd_brick_op_prerequisites (dict_t *dict, int glusterd_get_volinfo_from_brick (char *brick, glusterd_volinfo_t **volinfo); -#define INDEX_BASEPATH ".glusterfs/indices" -static inline void -glusterd_get_index_basepath (glusterd_brickinfo_t *brickinfo, char *buffer, - size_t size) -{ - if (!buffer) - return; - snprintf (buffer, size, "%s/%s", brickinfo->path, INDEX_BASEPATH); - -} - #endif diff --git a/xlators/mgmt/glusterd/src/glusterd-volgen.c b/xlators/mgmt/glusterd/src/glusterd-volgen.c index 69629f201a..b261889407 100644 --- a/xlators/mgmt/glusterd/src/glusterd-volgen.c +++ b/xlators/mgmt/glusterd/src/glusterd-volgen.c @@ -2012,8 +2012,8 @@ brick_graph_add_index (volgen_graph_t *graph, glusterd_volinfo_t *volinfo, if (!xl) goto out; - glusterd_get_index_basepath (brickinfo, index_basepath, - sizeof(index_basepath)); + snprintf (index_basepath, sizeof (index_basepath), "%s/%s", + brickinfo->path, ".glusterfs/indices"); ret = xlator_set_option (xl, "index-base", index_basepath); if (ret) |