#!/bin/bash . $(dirname $0)/../../include.rc . $(dirname $0)/../../dht.rc cleanup; # Test steps: # The test checks to make sure that the trusted.pgfid.xx xattr is set on # both the linkto and data files post the final rename. # The test creates files file-1 and file-3 so that src_hashed = dst_hashed, # src_cached = dst_cached and xxx_hashed != xxx_cached. # It then renames file-1 to file-3 which triggers the posix_mknod call # which updates the trusted.pgfid.xx xattr. TEST glusterd TEST pidof glusterd TEST $CLI volume create $V0 $H0:$B0/${V0}0 $H0:$B0/${V0}1 TEST $CLI volume start $V0 TEST $CLI volume set $V0 storage.build-pgfid on ## Mount FUSE TEST glusterfs -s $H0 --volfile-id $V0 $M0; TEST mkdir $M0/tmp # Not the best way to do this but I need files which hash to the same subvol and # whose cached subvols are the same. # In a 2 subvol distributed volume, file-{1,3} hash to the same subvol. # file-2 will hash to the other subvol TEST touch $M0/tmp/file-2 pgfid_xattr_name=$(getfattr -m "trusted.pgfid.*" $B0/${V0}1/tmp/file-2 | grep "trusted.pgfid") echo $pgfid_xattr_name TEST mv $M0/tmp/file-2 $M0/tmp/file-1 TEST touch $M0/tmp/file-2 TEST mv $M0/tmp/file-2 $M0/tmp/file-3 # At this point, both the file-1 and file-3 data files exist on one subvol # and both linkto files on the other TEST mv -f $M0/tmp/file-1 $M0/tmp/file-3 TEST getfattr -n $pgfid_xattr_name $B0/${V0}0/tmp/file-3 TEST getfattr -n $pgfid_xattr_name $B0/${V0}1/tmp/file-3 # Not required for the test but an extra check if required. # The linkto file was not renamed Without the fix. #TEST mv $M0/tmp/file-3 $M0/tmp/file-6 cleanup;