diff options
author | vmallika <vmallika@redhat.com> | 2015-01-08 16:03:04 +0530 |
---|---|---|
committer | Raghavendra G <rgowdapp@redhat.com> | 2015-01-19 02:39:40 -0800 |
commit | 8d73f6288249757662cf36e746835e3ecd84add1 (patch) | |
tree | feacd870c011a3067de51dc2cb5290748fe6e78d /tests | |
parent | 10e4add35f64c24fe9ef03dc6824975fc9db1455 (diff) |
quota: For a link operation, do quota_check_limit only till the
common ancestor of src and dst file
In a dht_rename, if src_cached and dst_hashed are different, then
rename is split into link and unlink.
We need to handle quota_link properly.
We have fixed quota_rename in patch# 8940, we need to handle quota_link
similarly
> http://review.gluster.org/#/c/8940/
> quota: For a rename operation, do quota_check_limit only till the
> common ancestor of src and dst file
> Example:
> set quota limit set to 1GB on /
> create a file /a1/b1/file1 of 600MB
> mv /a1/b1/file1 /a1/b1/file2
> This rename fails as it takes delta into account which sums up to 1.2BG.
> Though we are not creating new file, we still get quota exceeded error.
> So quota enforce should happen only till b1.
> Similarly:
> mv /a/b/c/file /a/b/x/y/file
> quota enforce should happen only till dir 'b'
> Change-Id: Ia1e5363da876c3d71bd424e67a8bb28b7ac1c7c1
> BUG: 1153964
> Signed-off-by: vmallika <vmallika@redhat.com>
> Reviewed-on: http://review.gluster.org/8940
> Tested-by: Gluster Build System <jenkins@build.gluster.com>
> Reviewed-by: Raghavendra G <rgowdapp@redhat.com>
> Tested-by: Raghavendra G <rgowdapp@redhat.com>
Change-Id: I2c814018d17f7af1807c1d1d162d8bdcbb31e491
BUG: 1153964
Signed-off-by: vmallika <vmallika@redhat.com>
Reviewed-on: http://review.gluster.org/9419
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Raghavendra G <rgowdapp@redhat.com>
Tested-by: Raghavendra G <rgowdapp@redhat.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/bugs/quota/bug-1153964.t | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/tests/bugs/quota/bug-1153964.t b/tests/bugs/quota/bug-1153964.t new file mode 100644 index 00000000000..c923b71ca73 --- /dev/null +++ b/tests/bugs/quota/bug-1153964.t @@ -0,0 +1,83 @@ +#!/bin/bash + +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../volume.rc +. $(dirname $0)/../../nfs.rc + +function rename_loop() +{ + local i=0 + local limit=$1 + while [ $i -lt $limit ] + do + j=$[$i + 1] + mv $N0/test_dir/file$i $N0/test_dir/file$j + if [ "$?" != "0" ] + then + return 1 + fi + i=$[$i + 1] + done + return 0 +} + +function createFile_and_checkLimit() +{ + local count_val=$1; + dd if=/dev/zero of="$N0/test_dir/file0" bs=1048576 count=$count_val + sleep 3 + if [ -f $N0/test_dir/file0 ] + then + rename_loop 10 + if [ "$?" == "0" ] + then + echo "Y" + else + echo "N" + fi + fi +} + +cleanup; + +TEST glusterd +TEST pidof glusterd + +TEST $CLI volume create $V0 $H0:$B0/${V0}1 $H0:$B0/${V0}2 +EXPECT 'Created' volinfo_field $V0 'Status' +TEST $CLI volume start $V0 +EXPECT 'Started' volinfo_field $V0 'Status' + +TEST $CLI volume quota $V0 enable +EXPECT 'on' volinfo_field $V0 'features.quota' + +EXPECT_WITHIN $NFS_EXPORT_TIMEOUT "1" is_nfs_export_available; +TEST mount_nfs $H0:/$V0 $N0 nolock; +TEST mkdir -p $N0/test_dir/ + +# Try to rename file under various case and check if +# quota limit exceeds or not. +TEST $CLI volume quota $V0 limit-usage /test_dir 100MB +# Case1 : If used size is less than hard-limit size +# Create a 600MB file +EXPECT 'Y' createFile_and_checkLimit 60 + +TEST rm -rf $N0/test_dir/* +# Case2 : If used size is equal to hard-limit size +# Create a 100MB file +EXPECT 'Y' createFile_and_checkLimit 100 + +TEST rm -rf $N0/test_dir/* +# Case3 : If used size is greater than hard-limit size +# Create a 110MB file +EXPECT 'Y' createFile_and_checkLimit 110 + +# remove this directory as it has been created as part +# of above testcase +TEST rm -rf $N0/test_dir/ + +EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" force_umount $N0 + +cleanup; + + |