summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKrutika Dhananjay <kdhananj@redhat.com>2013-12-02 11:37:55 +0530
committerAnand Avati <avati@redhat.com>2013-12-04 13:41:56 -0800
commitdef8890d5ea7e73dfa37023e5d324be0bc289f5a (patch)
treec6447860f90e8907c4ca929c83c9c14d032a4c05
parentb6c835282de500dff69e68bc4aebd3700c7388d0 (diff)
cli: Fail creation of bricks on root partition in script mode
Also added an option 'wignore' to save ourselves the trouble of modifying test scripts in our regression test suite as well as those that are still under review. Change-Id: Id320c03595506e9da187e766991c19640bd000c5 BUG: 1028281 Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com> Reviewed-on: http://review.gluster.org/6409 Reviewed-by: Kaushal M <kaushal@redhat.com> Reviewed-by: Krishnan Parthasarathi <kparthas@redhat.com> Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Anand Avati <avati@redhat.com>
-rw-r--r--cli/src/cli-cmd-volume.c6
-rw-r--r--cli/src/cli.c7
-rw-r--r--cli/src/cli.h1
-rw-r--r--tests/bugs/bug-948729/bug-948729-mode-script.t43
-rw-r--r--tests/bugs/bug-948729/bug-948729.t3
-rw-r--r--tests/include.rc2
6 files changed, 26 insertions, 36 deletions
diff --git a/cli/src/cli-cmd-volume.c b/cli/src/cli-cmd-volume.c
index f11fa21db..f3b1828a0 100644
--- a/cli/src/cli-cmd-volume.c
+++ b/cli/src/cli-cmd-volume.c
@@ -395,7 +395,7 @@ cli_cmd_volume_create_cbk (struct cli_state *state, struct cli_cmd_word *word,
}
}
- if (state->mode & GLUSTER_MODE_SCRIPT) {
+ if (state->mode & GLUSTER_MODE_WIGNORE) {
ret = dict_set_int32 (options, "force", _gf_true);
if (ret) {
gf_log ("cli", GF_LOG_ERROR, "Failed to set force "
@@ -981,7 +981,7 @@ cli_cmd_volume_add_brick_cbk (struct cli_state *state,
}
}
- if (state->mode & GLUSTER_MODE_SCRIPT) {
+ if (state->mode & GLUSTER_MODE_WIGNORE) {
ret = dict_set_int32 (options, "force", _gf_true);
if (ret) {
gf_log ("cli", GF_LOG_ERROR, "Failed to set force "
@@ -1552,7 +1552,7 @@ cli_cmd_volume_replace_brick_cbk (struct cli_state *state,
goto out;
}
- if (state->mode & GLUSTER_MODE_SCRIPT) {
+ if (state->mode & GLUSTER_MODE_WIGNORE) {
ret = dict_set_int32 (options, "force", _gf_true);
if (ret) {
gf_log ("cli", GF_LOG_ERROR, "Failed to set force"
diff --git a/cli/src/cli.c b/cli/src/cli.c
index 67f1ad257..a77200c66 100644
--- a/cli/src/cli.c
+++ b/cli/src/cli.c
@@ -326,14 +326,21 @@ cli_opt_parse (char *opt, struct cli_state *state)
return 0;
}
+ if (strcmp (opt, "wignore") == 0) {
+ state->mode |= GLUSTER_MODE_WIGNORE;
+ return 0;
+ }
+
oarg = strtail (opt, "mode=");
if (oarg) {
if (strcmp (oarg, "script") == 0) {
state->mode |= GLUSTER_MODE_SCRIPT;
return 0;
}
+
if (strcmp (oarg, "interactive") == 0)
return 0;
+
return -1;
}
diff --git a/cli/src/cli.h b/cli/src/cli.h
index 1fe8ffff7..f5db29383 100644
--- a/cli/src/cli.h
+++ b/cli/src/cli.h
@@ -45,6 +45,7 @@ enum argp_option_keys {
#define GLUSTER_MODE_SCRIPT (1 << 0)
#define GLUSTER_MODE_ERR_FATAL (1 << 1)
#define GLUSTER_MODE_XML (1 << 2)
+#define GLUSTER_MODE_WIGNORE (1 << 3)
#define GLUSTERD_GET_QUOTA_AUX_MOUNT_PATH(abspath, volname, path) \
diff --git a/tests/bugs/bug-948729/bug-948729-mode-script.t b/tests/bugs/bug-948729/bug-948729-mode-script.t
index 541ca897d..5a1fdd3b1 100644
--- a/tests/bugs/bug-948729/bug-948729-mode-script.t
+++ b/tests/bugs/bug-948729/bug-948729-mode-script.t
@@ -13,10 +13,6 @@ uuid1=`uuidgen`;
uuid2=`uuidgen`;
uuid3=`uuidgen`;
-V1=patchy1
-V2=patchy2
-V3=patchy3
-
TEST launch_cluster 2;
TEST $CLI_1 peer probe $H2;
@@ -24,17 +20,11 @@ TEST $CLI_1 peer probe $H2;
EXPECT_WITHIN 20 1 check_peers;
B3=/d/backends/3
-B4=/d/backends/4
-B5=/d/backends/5
-B6=/d/backends/6
-mkdir -p $B3 $B4 $B5 $B6
+mkdir -p $B3
TEST truncate -s 16M $B1/brick1
TEST truncate -s 16M $B2/brick2
TEST truncate -s 16M $B3/brick3
-TEST truncate -s 16M $B4/brick4
-TEST truncate -s 16M $B5/brick5
-TEST truncate -s 16M $B6/brick6
TEST LD1=`losetup --find --show $B1/brick1`
TEST mkfs.xfs $LD1
@@ -42,44 +32,35 @@ TEST LD2=`losetup --find --show $B2/brick2`
TEST mkfs.xfs $LD2
TEST LD3=`losetup --find --show $B3/brick3`
TEST mkfs.xfs $LD3
-TEST LD4=`losetup --find --show $B4/brick4`
-TEST mkfs.xfs $LD4
-TEST LD5=`losetup --find --show $B5/brick5`
-TEST mkfs.xfs $LD5
-TEST LD6=`losetup --find --show $B6/brick6`
-TEST mkfs.xfs $LD6
-mkdir -p $B1/$V0 $B2/$V0 $B3/$V0 $B4/$V0 $B5/$V0 $B6/$V0
+mkdir -p $B1/$V0 $B2/$V0 $B3/$V0
TEST mount -t xfs $LD1 $B1/$V0
TEST mount -t xfs $LD2 $B2/$V0
TEST mount -t xfs $LD3 $B3/$V0
-TEST mount -t xfs $LD4 $B4/$V0
-TEST mount -t xfs $LD5 $B5/$V0
-TEST mount -t xfs $LD6 $B6/$V0
+
+cli1=$(echo $CLI1 | sed 's/ --wignore//')
#Case 0: Parent directory of the brick is absent
-TEST ! $CLI_1 volume create $V0 $H1:$B1/$V0/nonexistent/b1 $H2:$B2/$V0/nonexistent/b2
+TEST ! $cli1 volume create $V0 $H1:$B1/$V0/nonexistent/b1 $H2:$B2/$V0/nonexistent/b2
#Case 1: File system root being used as brick directory
-TEST $CLI_1 volume create $V0 $H1:$B5/$V0 $H2:$B6/$V0
+TEST ! $cli1 volume create $V0 $H1:$B1/$V0 $H2:$B2/$V0
#Case 2: Brick directory contains only one component
-TEST $CLI_1 volume create $V1 $H1:/$uuid1 $H2:/$uuid2
+TEST ! $cli1 volume create $V0 $H1:/$uuid1 $H2:/$uuid2
#Case 3: Sub-directories of the backend FS being used as brick directory
-TEST $CLI_1 volume create $V2 $H1:$B1/$V0/brick1 $H2:$B2/$V0/brick2
+TEST $cli1 volume create $V0 $H1:$B1/$V0/brick1 $H2:$B2/$V0/brick2
#add-brick tests
-TEST ! $CLI_1 volume add-brick $V0 $H1:$B3/$V0/nonexistent/brick3
-TEST $CLI_1 volume add-brick $V0 $H1:$B3/$V0
-TEST $CLI_1 volume add-brick $V1 $H1:/$uuid3
-TEST $CLI_1 volume add-brick $V2 $H1:$B4/$V0/brick3
+TEST ! $cli1 volume add-brick $V0 $H1:$B3/$V0/nonexistent/brick3
+TEST ! $cli1 volume add-brick $V0 $H1:$B3/$V0
+TEST ! $cli1 volume add-brick $V0 $H1:/$uuid3
+TEST $cli1 volume add-brick $V0 $H1:$B3/$V0/brick3
#####replace-brick tests
#FIX-ME : replace-brick does not currently work in the newly introduced
#####cluster test framework
-rmdir /$uuid1 /$uuid2 /$uuid3
-
cleanup;
diff --git a/tests/bugs/bug-948729/bug-948729.t b/tests/bugs/bug-948729/bug-948729.t
index f94db1ea0..3914a454c 100644
--- a/tests/bugs/bug-948729/bug-948729.t
+++ b/tests/bugs/bug-948729/bug-948729.t
@@ -40,8 +40,9 @@ TEST mount -t xfs $LD1 $B1/$V0
TEST mount -t xfs $LD2 $B2/$V0
TEST mount -t xfs $LD3 $B3/$V0
-#Tests without --mode=script option
+#Tests without options 'mode=script' and 'wignore'
cli1=$(echo $CLI1 | sed 's/ --mode=script//')
+cli1=$(echo $cli1 | sed 's/ --wignore//')
#Case 0: Parent directory of the brick is absent
TEST ! $cli1 volume create $V0 $H1:$B1/$V0/nonexistent/b1 $H2:$B2/$V0/nonexistent/b2
diff --git a/tests/include.rc b/tests/include.rc
index 40dd8ac96..0369d2610 100644
--- a/tests/include.rc
+++ b/tests/include.rc
@@ -8,7 +8,7 @@ H0=${H0:=`hostname --fqdn`}; # hostname
DEBUG=${DEBUG:=0} # turn on debugging?
statedumpdir=`gluster --print-statedumpdir`; # Default directory for statedump
-CLI="gluster --mode=script";
+CLI="gluster --mode=script --wignore";
mkdir -p $B0;
mkdir -p $M0 $M1;