summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKrutika Dhananjay <kdhananj@redhat.com>2014-06-22 15:20:19 +0530
committerVijay Bellur <vbellur@redhat.com>2014-06-26 09:58:31 -0700
commite93e7d3050544a09785753d56c18f6538423915e (patch)
treea33f2911c195aa8a9e0e807ffe869ae2d161675b
parentd3f0de90d0c5166e63f5764d2f21703fd29ce976 (diff)
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 <kdhananj@redhat.com> Reviewed-on: http://review.gluster.org/8145 Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com> Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Vijay Bellur <vbellur@redhat.com>
-rw-r--r--tests/bugs/bug-1100050.t25
-rw-r--r--tests/volume.rc4
-rw-r--r--xlators/cluster/stripe/src/stripe.c1
3 files changed, 29 insertions, 1 deletions
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
diff --git a/xlators/cluster/stripe/src/stripe.c b/xlators/cluster/stripe/src/stripe.c
index 5135eaf2643..dd7a58aa15a 100644
--- a/xlators/cluster/stripe/src/stripe.c
+++ b/xlators/cluster/stripe/src/stripe.c
@@ -298,7 +298,6 @@ stripe_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc,
VALIDATE_OR_GOTO (frame, err);
VALIDATE_OR_GOTO (this, err);
VALIDATE_OR_GOTO (loc, err);
- VALIDATE_OR_GOTO (loc->path, err);
VALIDATE_OR_GOTO (loc->inode, err);
priv = this->private;