diff options
author | Krutika Dhananjay <kdhananj@redhat.com> | 2014-06-22 15:20:19 +0530 |
---|---|---|
committer | Vijay Bellur <vbellur@redhat.com> | 2014-06-26 09:58:31 -0700 |
commit | e93e7d3050544a09785753d56c18f6538423915e (patch) | |
tree | a33f2911c195aa8a9e0e807ffe869ae2d161675b | |
parent | d3f0de90d0c5166e63f5764d2f21703fd29ce976 (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.t | 25 | ||||
-rw-r--r-- | tests/volume.rc | 4 | ||||
-rw-r--r-- | xlators/cluster/stripe/src/stripe.c | 1 |
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; |