diff options
author | vmallika <vmallika@redhat.com> | 2016-04-03 20:35:52 +0530 |
---|---|---|
committer | Vijaikumar Mallikarjuna <vmallika@redhat.com> | 2016-04-06 02:25:23 -0700 |
commit | 7927149f71adc49cad92f28f805a8e688534156e (patch) | |
tree | c8fffd7e9880d2f542a00e0dbb37c3efdbbee18a /tests | |
parent | 81955d8aaee8a2c7bf6370970926bc7b403a6efa (diff) |
quota: check inode limits only when new file/dir is created
When a inode limit is full, writes to any existing file
fails with disk quota exceed even if usage limit is
not set or usage limit is not full.
BUG: 1323486
Change-Id: I9679fe26a2839ade0b1541fa7f0a2b71ac6dcc31
Signed-off-by: vmallika <vmallika@redhat.com>
Reviewed-on: http://review.gluster.org/13911
Smoke: Gluster Build System <jenkins@build.gluster.com>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Manikandan Selvaganesh <mselvaga@redhat.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/basic/inode-quota-enforcing.t | 45 | ||||
-rw-r--r-- | tests/basic/inode-quota.t | 40 |
2 files changed, 30 insertions, 55 deletions
diff --git a/tests/basic/inode-quota-enforcing.t b/tests/basic/inode-quota-enforcing.t index 44b6c52a1ed..0cc92dd3963 100644 --- a/tests/basic/inode-quota-enforcing.t +++ b/tests/basic/inode-quota-enforcing.t @@ -6,6 +6,10 @@ cleanup; +QDD=$(dirname $0)/quota +# compile the test write program and run it +build_tester $(dirname $0)/quota.c -o $QDD + TESTS_EXPECTED_IN_LOOP=9 TEST glusterd @@ -14,7 +18,7 @@ TEST glusterd # Create, start and mount a volume with single brick # -------------------------------------------------- -TEST $CLI volume create $V0 $H0:$B0/{V0} +TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}{1,2}; TEST $CLI volume start $V0 @@ -32,24 +36,17 @@ EXPECT '0' volinfo_field $V0 'features.soft-timeout' TEST $CLI volume quota $V0 hard-timeout 0 EXPECT '0' volinfo_field $V0 'features.hard-timeout' - #------------------------------------------------------- -# Set and remove quota limits on the directory and +# Set quota limits on the directory and # verify if the limits are being reflected properly #------------------------------------------------------ -TEST $CLI volume quota $V0 limit-objects /test_dir 100 -EXPECT "100" quota_object_list_field "/test_dir" 2 - -# Need to verify this once -TEST $CLI volume quota $V0 remove-objects /test_dir -EXPECT "" quota_object_list_field "/test_dir" 2 - -# Set back the limits - TEST $CLI volume quota $V0 limit-objects /test_dir 10 EXPECT "10" quota_object_list_field "/test_dir" 2 +TEST $CLI volume quota $V0 limit-usage /test_dir 100MB +EXPECT "100.0MB" quota_list_field "/test_dir" 2 + #------------------------------------------------------ # Check the quota enforcement mechanism for object count #------------------------------------------------------- @@ -59,12 +56,15 @@ EXPECT "10" quota_object_list_field "/test_dir" 2 # as well. for i in {1..9}; do - TEST_IN_LOOP touch $M0/test_dir/test$i.txt + #TEST_IN_LOOP touch $M0/test_dir/test$i.txt + TEST_IN_LOOP $QDD $M0/test_dir/test$i.txt 256 4 done EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT "9" quota_object_list_field "/test_dir" 4 +EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT "9.0MB" quotausage "/test_dir" # Check available limit EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT "0" quota_object_list_field "/test_dir" 6 +EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT "91.0MB" quota_list_field "/test_dir" 5 # Check if hard-limit exceeded EXPECT "Yes" quota_object_list_field "/test_dir" 8 @@ -75,10 +75,25 @@ EXPECT "Yes" quota_object_list_field "/test_dir" 7 # Creation of 11th file should throw out an error TEST ! touch $M0/test_dir/test11.txt +#------------------------------------------------------- +# remove quota limits on the directory and +# verify if the limit show 'N/A' and displayes only the usage +#------------------------------------------------------ +TEST $CLI volume quota $V0 remove-objects /test_dir +EXPECT "N/A" quota_object_list_field "/test_dir" 2 +EXPECT "9" quota_object_list_field "/test_dir" 4 + +TEST $CLI volume quota $V0 remove /test_dir +EXPECT "N/A" quota_list_field "/test_dir" 2 +EXPECT "9.0MB" quotausage "/test_dir" 4 + +# Set back the limits +TEST $CLI volume quota $V0 limit-objects /test_dir 10 +EXPECT "10" quota_object_list_field "/test_dir" 2 + +# Remove all files and verify the file count TEST rm -rf $M0/test_dir/test* EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT "0" quota_object_list_field "/test_dir" 4 -TEST $CLI volume quota $V0 remove-objects /test_dir - rm -f $QDD cleanup; diff --git a/tests/basic/inode-quota.t b/tests/basic/inode-quota.t deleted file mode 100644 index 4b5ac44ee19..00000000000 --- a/tests/basic/inode-quota.t +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -. $(dirname $0)/../include.rc -. $(dirname $0)/../volume.rc - -function get_quota_value() -{ - local LIST_TYPE=$1 - local LIMIT_PATH=$2; - $CLI volume quota $V0 $LIST_TYPE $LIMIT_PATH | grep "$LIMIT_PATH"\ - | awk '{print $2}' -} - -cleanup; - -TEST glusterd; - -TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}{1,2}; -TEST $CLI volume start $V0; -TEST glusterfs --volfile-server=$H0 --volfile-id=$V0 $M0; - -TEST $CLI volume quota $V0 enable; -EXPECT "on" volinfo_field $V0 'features.quota' -EXPECT_WITHIN $PROCESS_UP_TIMEOUT "Y" quotad_up_status; - -TEST mkdir $M0/dir; - -TEST $CLI volume quota $V0 limit-usage /dir 10MB; -EXPECT "10.0MB" get_quota_value "list" "/dir" - -TEST $CLI volume quota $V0 limit-objects /dir 10; -EXPECT "10" get_quota_value "list-objects" "/dir" - -TEST $CLI volume quota $V0 remove /dir; -EXPECT "" get_quota_value "list" "/dir" - -TEST $CLI volume quota $V0 remove-objects /dir; -EXPECT "" get_quota_value "list-objects" "/dir" - -cleanup; |