From e93e7d3050544a09785753d56c18f6538423915e Mon Sep 17 00:00:00 2001 From: Krutika Dhananjay Date: Sun, 22 Jun 2014 15:20:19 +0530 Subject: cluster/stripe: Fix EINVAL errors on quota enabled volumes Write operations on directories with quota enabled used to fail with EINVAL on stripe volumes. This was due to assert failure in stripe_lookup(), meant to ensure loc->path is not NULL. However, in nameless lookup (in this particular case triggered by quotad, which has stripe xlator in its graph), loc->path can be legitimately NULL. The fix involves removing this check in stripe_lookup(). Change-Id: Ibbd4f68763fdd8a85f29da78b3937cef1ee4fd1e BUG: 1100050 Signed-off-by: Krutika Dhananjay Reviewed-on: http://review.gluster.org/8145 Reviewed-by: Pranith Kumar Karampuri Tested-by: Gluster Build System Reviewed-by: Vijay Bellur --- tests/bugs/bug-1100050.t | 25 +++++++++++++++++++++++++ tests/volume.rc | 4 ++++ 2 files changed, 29 insertions(+) create mode 100644 tests/bugs/bug-1100050.t (limited to 'tests') diff --git a/tests/bugs/bug-1100050.t b/tests/bugs/bug-1100050.t new file mode 100644 index 00000000000..537591dcd82 --- /dev/null +++ b/tests/bugs/bug-1100050.t @@ -0,0 +1,25 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc +. $(dirname $0)/../volume.rc + +cleanup; + +TEST glusterd; +TEST pidof glusterd; + +TEST gluster volume create $V0 stripe 2 $H0:$B0/{1,2} force; +TEST gluster volume start $V0; +TEST glusterfs --volfile-server=$H0 --volfile-id=$V0 $M0; + +TEST gluster volume quota $V0 enable; + +EXPECT_WITHIN $PROCESS_UP_TIMEOUT "Y" quotad_up_status; + +TEST mkdir $M0/dir; + +TEST gluster volume quota $V0 limit-usage /dir 10MB; + +TEST mkdir $M0/dir/subdir; + +cleanup; diff --git a/tests/volume.rc b/tests/volume.rc index 19be7ee4c92..3ed0c6887c6 100644 --- a/tests/volume.rc +++ b/tests/volume.rc @@ -154,6 +154,10 @@ function glustershd_up_status { gluster volume status | grep "Self-heal Daemon" | awk '{print $6}' } +function quotad_up_status { + gluster volume status | grep "Quota Daemon" | awk '{print $6}' +} + function get_brick_pid { local vol=$1 local host=$2 -- cgit