From 19de18219b93097ede8d14c218011a873ebd50ed Mon Sep 17 00:00:00 2001 From: Venky Shankar Date: Tue, 18 Sep 2012 12:41:46 +0530 Subject: cluster/dht: pathinfo xattr changes for directories Since directories have presence on all subvolumes there is no definite meaning of ->hashed_subvol or ->cached_subvol. getxattr() code path chooses ->cached_subvol for pathinfo extended attribute. While this makes sense of files, it makes less sense for directories. Further if a hashed or a cached subvolume is down, and there's a getxattr request for a directory, we return with an errno. This patch changes pathinfo extended attribute contents by aggregating information from all subvolumes that are up. Change-Id: I58adb741d63ccfd1d0239af75eb65f26f0fb384d Signed-off-by: Venky Shankar BUG: 856455 Reviewed-on: http://review.gluster.org/4047 Tested-by: Gluster Build System Reviewed-by: Anand Avati --- tests/bugs/bug-856455.t | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 tests/bugs/bug-856455.t (limited to 'tests') diff --git a/tests/bugs/bug-856455.t b/tests/bugs/bug-856455.t new file mode 100644 index 00000000000..1b2438b0481 --- /dev/null +++ b/tests/bugs/bug-856455.t @@ -0,0 +1,40 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc + +cleanup; + +BRICK_COUNT=3 + +TEST glusterd +TEST pidof glusterd + +TEST $CLI volume create $V0 $H0:$B0/${V0}0 $H0:$B0/${V0}1 $H0:$B0/${V0}2 +TEST $CLI volume start $V0 + +## Mount FUSE with caching disabled +TEST glusterfs --entry-timeout=0 --attribute-timeout=0 -s $H0 --volfile-id $V0 $M0; + +function query_pathinfo() +{ + local path=$1; + local retval; + + local pathinfo=`getfattr -m . -n trusted.glusterfs.pathinfo $path`; + retval=`echo $pathinfo | grep -o 'POSIX' | wc -l`; + echo $retval +} + +touch $M0/f00f; +mkdir $M0/f00d; + +# verify pathinfo for a file and directory +EXPECT 1 query_pathinfo $M0/f00f; +EXPECT $BRICK_COUNT query_pathinfo $M0/f00d; + +# Kill a brick process and then query for pathinfo +# for directories pathinfo should list backend patch from available (up) subvolumes + +kill -9 `cat /var/lib/glusterd/vols/$V0/run/$H0-d-backends-${V0}1.pid`; + +EXPECT `expr $BRICK_COUNT - 1` query_pathinfo $M0/f00d; -- cgit