From b6ea761969f85fbb0f22810eb3a3bf1476c8792c Mon Sep 17 00:00:00 2001 From: vmallika Date: Wed, 24 Dec 2014 15:13:36 +0530 Subject: 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 Reviewed-on: http://review.gluster.org/8940 Tested-by: Gluster Build System Reviewed-by: Raghavendra G Tested-by: Raghavendra G --- tests/bugs/bug-1161156.t | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'tests/bugs') diff --git a/tests/bugs/bug-1161156.t b/tests/bugs/bug-1161156.t index 12ebc45bdd3..9f33391d744 100755 --- a/tests/bugs/bug-1161156.t +++ b/tests/bugs/bug-1161156.t @@ -27,11 +27,13 @@ EXPECT_WITHIN $NFS_EXPORT_TIMEOUT 1 is_nfs_export_available TEST mount_nfs $H0:/$V0 $N0 mydir="dir" TEST mkdir -p $N0/$mydir +TEST mkdir -p $N0/newdir TEST dd if=/dev/zero of=$N0/$mydir/file bs=1k count=10240 TEST $CLI volume quota $V0 enable TEST $CLI volume quota $V0 limit-usage / 20MB +TEST $CLI volume quota $V0 limit-usage /newdir 5MB TEST $CLI volume quota $V0 soft-timeout 0 TEST $CLI volume quota $V0 hard-timeout 0 @@ -40,8 +42,12 @@ TEST dd if=/dev/zero of=$N0/$mydir/newfile_1 bs=512 count=10240 EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT "15.0MB" usage "/" TEST ! dd if=/dev/zero of=$N0/$mydir/newfile_2 bs=1k count=10240 -# Test the rename, it should fail due to space restrictions -TEST ! mv $N0/dir/file $N0/dir/newfile_3 +# Test rename within a directory. It should pass even when the +# corresponding directory quota is filled. +TEST mv $N0/dir/file $N0/dir/newfile_3 + +# rename should fail here with disk quota exceeded +TEST ! mv $N0/dir/newfile_3 $N0/newdir/ # cleanup umount_nfs $N0 -- cgit