diff options
author | Anand V. Avati <avati@amp.gluster.com> | 2009-05-07 15:02:09 +0530 |
---|---|---|
committer | Anand V. Avati <avati@amp.gluster.com> | 2009-05-07 15:12:09 +0530 |
commit | adb56cb5e0f0d718764b25f1b37397be720f8750 (patch) | |
tree | f7c4cd5f7ae77ae2487f6943735316166aa0c78f /extras | |
parent | babc4dfb08504e41a35cf06e8c297a19c87ac397 (diff) |
backend-xattr-sanitize.sh: script added to extras/
Run the script as:
sh$ ./backend-xattr-sanitize.sh /data/export0
and it will remove all the known stale xattrs on the backend files and dirs
Diffstat (limited to 'extras')
-rw-r--r-- | extras/Makefile.am | 2 | ||||
-rwxr-xr-x | extras/backend-xattr-sanitize.sh | 66 |
2 files changed, 67 insertions, 1 deletions
diff --git a/extras/Makefile.am b/extras/Makefile.am index d95880c5356..9be3973002a 100644 --- a/extras/Makefile.am +++ b/extras/Makefile.am @@ -5,7 +5,7 @@ EditorMode_DATA = glusterfs-mode.el glusterfs.vim SUBDIRS = init.d benchmarking -EXTRA_DIST = specgen.scm MacOSX/Portfile glusterfs-mode.el glusterfs.vim migrate-unify-to-distribute.sh +EXTRA_DIST = specgen.scm MacOSX/Portfile glusterfs-mode.el glusterfs.vim migrate-unify-to-distribute.sh backend-xattr-sanitize.sh CLEANFILES = diff --git a/extras/backend-xattr-sanitize.sh b/extras/backend-xattr-sanitize.sh new file mode 100755 index 00000000000..3967654cf47 --- /dev/null +++ b/extras/backend-xattr-sanitize.sh @@ -0,0 +1,66 @@ +#!/bin/sh + +# Each entry in the array below is a regular expression to match stale keys + +xs=("trusted.glusterfs.createtime" + "trusted.glusterfs.version" + "trusted.glusterfs.afr.data-pending" + "trusted.glusterfs.afr.metadata-pending" + "trusted.glusterfs.afr.entry-pending") + +absolute_path() +{ + local dir=$(dirname "$1"); + local base=$(basename "$1"); + cd "$dir"; + echo $(pwd)/"$base"; + cd - >/dev/null; +} + + +cleanup() +{ + sanitizee=$(absolute_path "$1"); + + stale_keys=$( + for pattern in ${xs[@]}; do + getfattr -d -m "$pattern" "$sanitizee" 2>/dev/null | + grep = | cut -f1 -d=; + done + ) + + if [ -z "$stale_keys" ]; then + return; + fi + + for key in $stale_keys; do + echo "REMOVEXATTR ($key) $sanitizee"; + setfattr -x "$key" "$sanitizee"; + done +} + + +crawl() +{ + this_script=$(absolute_path "$0"); + + export sanitize=yes; + find "$1" -exec "$this_script" {} \; +} + + +main() +{ + if [ -z "$1" ]; then + echo "Usage: $0 <export-dir>" + return 1 + fi + + if [ "$sanitize" = "yes" ]; then + cleanup "$@"; + else + crawl "$@"; + fi +} + +main "$@" |