diff options
| -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 "$@"  | 
