diff options
| -rw-r--r-- | tests/bugs/glusterd/optimized-basic-testcases.t | 9 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 9 | 
2 files changed, 18 insertions, 0 deletions
diff --git a/tests/bugs/glusterd/optimized-basic-testcases.t b/tests/bugs/glusterd/optimized-basic-testcases.t index b9fba4cdefb..dd98a65fa9a 100644 --- a/tests/bugs/glusterd/optimized-basic-testcases.t +++ b/tests/bugs/glusterd/optimized-basic-testcases.t @@ -270,4 +270,13 @@ pkill glusterfsd;  TEST glusterd  TEST $CLI volume status $V1 +#bug-853601 - Avoid using /var/lib/glusterd as a brick +TEST ! $CLI volume create "test" $H0:/var/lib/glusterd +TEST ! $CLI volume create "test" $H0:/var/lib/glusterd force +TEST ! $CLI volume create "test" $H0:/var/lib/glusterd/abc +TEST ! $CLI volume create "test" $H0:/var/lib/glusterd/abc force +mkdir -p /xyz/var/lib/glusterd/abc +TEST  $CLI volume create "test" $H0:/xyz/var/lib/glusterd/abc +EXPECT 'Created' volinfo_field "test" 'Status'; +  cleanup diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index a46530c532c..1bf682d4fd3 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -1541,6 +1541,15 @@ glusterd_validate_and_create_brickpath (glusterd_brickinfo_t *brickinfo,                  goto out;          } +        if (sizeof(GLUSTERD_DEFAULT_WORKDIR) <= (strlen(brickinfo->path) + 1) && +            !strncmp(brickinfo->path, GLUSTERD_DEFAULT_WORKDIR, +                     (sizeof(GLUSTERD_DEFAULT_WORKDIR) - 1))) { +                len = snprintf (msg, sizeof (msg), "Brick isn't allowed to be " +                                "created inside glusterd's working directory."); +                ret = -1; +                goto out; +        } +          if (!is_force) {                  if (brick_st.st_dev != parent_st.st_dev) {                          len = snprintf (msg, sizeof (msg), "The brick %s:%s "  | 
