diff options
| author | Kaleb S. KEITHLEY <kkeithle@redhat.com> | 2013-08-28 22:43:41 +0530 | 
|---|---|---|
| committer | Anand Avati <avati@redhat.com> | 2013-08-28 16:58:43 -0700 | 
| commit | b880b6b2908ad4e4afc8e26613bd0db8f0b28750 (patch) | |
| tree | 073f25549d4c3a023a7cc6776ac13559a5bb900e | |
| parent | bbcdbd8c36c7756f39bb7464cd1c69b67e66cfaa (diff) | |
stripe: remove unused param, handle mem alloc failure
Change-Id: I9c27b1edab111031ca8eea9cc49480ea01e39089
BUG: 1002207
Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
Reviewed-on: http://review.gluster.org/5716
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Anand Avati <avati@redhat.com>
| -rw-r--r-- | libglusterfs/src/mem-pool.h | 2 | ||||
| -rw-r--r-- | tests/bugs/bug-1002207.t | 54 | ||||
| -rw-r--r-- | xlators/cluster/stripe/src/stripe.c | 4 | 
3 files changed, 57 insertions, 3 deletions
diff --git a/libglusterfs/src/mem-pool.h b/libglusterfs/src/mem-pool.h index 939b4f2a71b..31f49f75cbb 100644 --- a/libglusterfs/src/mem-pool.h +++ b/libglusterfs/src/mem-pool.h @@ -148,7 +148,7 @@ char * gf_strdup (const char *src)  }  static inline void * -gf_memdup (const void *src, void *dst, size_t size) +gf_memdup (const void *src, size_t size)  {          void *dup_mem = NULL; diff --git a/tests/bugs/bug-1002207.t b/tests/bugs/bug-1002207.t new file mode 100644 index 00000000000..50b8c7d31fd --- /dev/null +++ b/tests/bugs/bug-1002207.t @@ -0,0 +1,54 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc +. $(dirname $0)/../volume.rc + +cleanup; + +## Start and create a volume +TEST glusterd; +TEST pidof glusterd; +TEST $CLI volume create $V0 stripe 2 $H0:$B0/${V0}{1,2,3,4,5,6,7,8}; + +## Verify volume is is created +EXPECT "$V0" volinfo_field $V0 'Volume Name'; +EXPECT 'Created' volinfo_field $V0 'Status'; + +## Start volume and verify +TEST $CLI volume start $V0; +EXPECT 'Started' volinfo_field $V0 'Status'; + +dd if=/dev/zero of=$M0/file$i.data bs=1024 count=1024 1>/dev/null 2>&1 + +function xattr_query_check() +{ +    local path=$1 +    local xa_name=$2 + +    local ret=`getfattr -m . -n $xa_name $path 2>&1 | grep -o "$xa_name: No such attribute" | wc -l` +    echo $ret +} + +function set_xattr() +{ +    local path=$1 +    local xa_name=$2 +    local xa_val=$3 + +    setfattr -n $xa_name -v $xa_val $path +    echo $? +} + +EXPECT 0 set_xattr $M0/file$i.data "trusted.name" "testofafairlylongxattrstringthatbutnotlongenoughtofailmemoryallocation" + +EXPECT 0 xattr_query_check $M0/file$i.data "trusted.name" + +## Finish up +TEST $CLI volume stop $V0; +EXPECT 'Stopped' volinfo_field $V0 'Status'; + +TEST $CLI volume delete $V0; +TEST ! $CLI volume info $V0; + +cleanup; + diff --git a/xlators/cluster/stripe/src/stripe.c b/xlators/cluster/stripe/src/stripe.c index 056dea2eb59..a8b8f653088 100644 --- a/xlators/cluster/stripe/src/stripe.c +++ b/xlators/cluster/stripe/src/stripe.c @@ -5199,10 +5199,10 @@ stripe_vgetxattr_cbk (call_frame_t *frame, void *cookie,                          xattr->pos = cky;                          xattr->xattr_value = gf_memdup (xattr_val, -                                                        xattr->xattr_value,                                                          xattr->xattr_len); -                        local->xattr_total_len += xattr->xattr_len + 1; +                        if (xattr->xattr_value != NULL) +                                local->xattr_total_len += xattr->xattr_len + 1;                  }          }   out:  | 
