glusterfs/tests/bugs/bug-884597.t
Pranith Kumar K 8d92734f28 tests: Change umount with force_umount with 5 retries
Change-Id: I0e2dbdfd34080328dfa6b4eebef0366f2b0fcb04
BUG: 1092850
Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
Reviewed-on: http://review.gluster.org/8117
Tested-by: Justin Clift <justin@gluster.org>
Reviewed-by: Harshavardhana <harsha@harshavardhana.net>
Tested-by: Harshavardhana <harsha@harshavardhana.net>
Reviewed-by: Sachin Pandit <spandit@redhat.com>
Reviewed-by: Prashanth Pai <ppai@redhat.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
2014-06-23 03:13:28 -07:00

154 lines
3.3 KiB
Bash
Executable File

#!/bin/bash
. $(dirname $0)/../include.rc
. $(dirname $0)/../dht.rc
. $(dirname $0)/../volume.rc
cleanup;
BRICK_COUNT=3
function uid_gid_compare()
{
val=1
if [ "$1" == "$3" ]
then
if [ "$2" == "$4" ]
then
val=0
fi
fi
echo "$val"
}
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
TEST glusterfs --attribute-timeout=0 --entry-timeout=0 -s $H0 --volfile-id $V0 $M0;
i=1
NEW_UID=36
NEW_GID=36
TEST touch $M0/$i
chown $NEW_UID:$NEW_GID $M0/$i
## rename till file gets a linkfile
while [ $i -ne 0 ]
do
TEST mv $M0/$i $M0/$(( $i+1 ))
let i++
file_has_linkfile $i
has_link=$?
if [ $has_link -eq 2 ]
then
break;
fi
done
get_hashed_brick $i
cached=$?
# check if uid/gid on linkfile is created with correct uid/gid
BACKEND_UID=`stat --printf=%u $B0/${V0}$cached/$i`;
BACKEND_GID=`stat --printf=%g $B0/${V0}$cached/$i`;
EXPECT "0" uid_gid_compare $NEW_UID $NEW_GID $BACKEND_UID $BACKEND_GID
# remove linkfile from backend, and trigger a lookup heal. uid/gid should match
rm -rf $B0/${V0}$cached/$i
# without a unmount, we are not able to trigger a lookup based heal
EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" force_umount $M0
## Mount FUSE
TEST glusterfs --attribute-timeout=0 --entry-timeout=0 -s $H0 --volfile-id $V0 $M0;
lookup=`ls -l $M0/$i 2>/dev/null`
# check if uid/gid on linkfile is created with correct uid/gid
BACKEND_UID=`stat --printf=%u $B0/${V0}$cached/$i`;
BACKEND_GID=`stat --printf=%g $B0/${V0}$cached/$i`;
EXPECT "0" uid_gid_compare $NEW_UID $NEW_GID $BACKEND_UID $BACKEND_GID
# create hardlinks. Make sure a linkfile gets created
i=1
NEW_UID=36
NEW_GID=36
TEST touch $M0/file
chown $NEW_UID:$NEW_GID $M0/file;
## ln till file gets a linkfile
while [ $i -ne 0 ]
do
TEST ln $M0/file $M0/link$i
file_has_linkfile link$i
has_link=$?
if [ $has_link -eq 2 ]
then
break;
fi
let i++
done
get_hashed_brick link$i
cached=$?
# check if uid/gid on linkfile is created with correct uid/gid
BACKEND_UID=`stat --printf=%u $B0/${V0}$cached/link$i`;
BACKEND_GID=`stat --printf=%g $B0/${V0}$cached/link$i`;
EXPECT "0" uid_gid_compare $NEW_UID $NEW_GID $BACKEND_UID $BACKEND_GID
## UID/GID creation as different user
i=1
NEW_UID=36
NEW_GID=36
TEST touch $M0/user_file1
TEST chown $NEW_UID:$NEW_GID $M0/user_file1;
## Give permission on volume, so that different users can perform rename
TEST chmod 0777 $M0
## Add a user known as ABC and perform renames
TEST `useradd -M ABC 2>/dev/null`
TEST cd $M0
## rename as different user till file gets a linkfile
while [ $i -ne 0 ]
do
su -c "mv $M0/user_file$i $M0/user_file$(( $i+1 ))" ABC
let i++
file_has_linkfile user_file$i
has_link=$?
if [ $has_link -eq 2 ]
then
break;
fi
done
## del user ABC
TEST userdel ABC
get_hashed_brick user_file$i
cached=$?
# check if uid/gid on linkfile is created with correct uid/gid
BACKEND_UID=`stat --printf=%u $B0/${V0}$cached/user_file$i`;
BACKEND_GID=`stat --printf=%g $B0/${V0}$cached/user_file$i`;
EXPECT "0" uid_gid_compare $NEW_UID $NEW_GID $BACKEND_UID $BACKEND_GID
cleanup;