extras: clean up a brick's gfid xattr

* extras/clear_xattrs.sh: This script enables a brick from a
deleted volume(stale brick) to be used in a new volume by
clearing all the trusted.gfid xattr from the brick tree.

* One should run this script on all machines which have
stale bricks if one wants to re-use the same bricks
for a new volume.

NOTE: This script *SHOULD BE RUN ONLY AFTER STOPPING A VOLUME*,
thereby ensuring that no replace-brick or rebalance operations
are on-going.

Change-Id: I35a4a2784fe502749184b87299b1a043b8e48e90
BUG: 765572
Signed-off-by: Rajesh Amaravathi <rajesh@redhat.com>
Reviewed-on: http://review.gluster.com/781
Reviewed-by: Amar Tumballi <amar@gluster.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vijay@gluster.com>
This commit is contained in:
Rajesh Amaravathi 2011-12-13 12:58:25 +05:30 committed by Vijay Bellur
parent 31fa069329
commit 4511ed196f

43
extras/clear_xattrs.sh Executable file
View File

@ -0,0 +1,43 @@
#!/bin/bash
# Clear the trusted.gfid xattr in the brick tree
# This script must be run only on a stopped brick/volume
# Stop the volume to make sure no rebalance/replace-brick
# operations are on-going
# Not much error checking
remove_xattrs ()
{
find "$1" -exec setfattr -h -x "trusted.gfid" '{}' \; > /dev/null 2>&1;
find "$1" -exec setfattr -h -x "trusted.glusterfs.volume-id" '{}' \; > /dev/null 2>&1;
}
main ()
{
if [ -z "$1" ]; then
echo "Please specify the brick path(s)";
exit 1;
fi
which getfattr > /dev/null 2>&1;
if [ $? -ne 0 ]; then
echo "attr package missing";
exit 1;
fi
which setfattr > /dev/null 2>&1;
if [ $? -ne 0 ]; then
echo "attr package missing";
exit 1;
fi
for brick in "$@";
do
echo "xattr clean-up in progress: $brick";
remove_xattrs "$brick";
echo "$brick ready to be used as a glusterfs brick";
done;
}
main "$@";