X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fscripts%2Flfs_migrate;h=e9c8aaeddec4a9f7efac364ad6740accb4cb3293;hb=a70b020e5b2f1bbe3b759232852beaac4f0852b5;hp=c2855106e38f5ea285fbedd2b47d1923920f7380;hpb=373de39ec19b747126e8cc9971eabc8a620f7a87;p=fs%2Flustre-release.git diff --git a/lustre/scripts/lfs_migrate b/lustre/scripts/lfs_migrate index c285510..e9c8aae 100755 --- a/lustre/scripts/lfs_migrate +++ b/lustre/scripts/lfs_migrate @@ -17,6 +17,7 @@ set -e RSYNC=${RSYNC:-rsync} ECHO=echo LFS=${LFS:-lfs} +LFS_SIZE_OPT="-s" usage() { cat -- <&2 @@ -96,7 +97,12 @@ strings $(which $RSYNC) 2>&1 | grep -q lustre && LFS=: # access the temporary file. umask 0077 +# This is needed for 1.8 Interoperability and can be removed in the future +$LFS getstripe --help 2>&1 | grep -q stripe-size && LFS_SIZE_OPT="-S" + lfs_migrate() { + local RSYNC_MODE=false + while IFS='' read -d '' OLDNAME; do $ECHO -n "$OLDNAME: " @@ -126,7 +132,6 @@ lfs_migrate() { continue fi - if [ "$OPT_RESTRIPE" ]; then UNLINK="" else @@ -138,17 +143,32 @@ lfs_migrate() { [ "$OPT_STRIPE_COUNT" ] && COUNT=$OPT_STRIPE_COUNT || COUNT=$($LFS getstripe -c "$OLDNAME" \ 2> /dev/null) - SIZE=$($LFS getstripe -S "$OLDNAME" 2> /dev/null) + SIZE=$($LFS getstripe $LFS_SIZE_OPT "$OLDNAME" \ + 2> /dev/null) [ -z "$COUNT" -o -z "$SIZE" ] && UNLINK="" + SIZE=${LFS_SIZE_OPT}${SIZE} fi + + # first try to migrate inside lustre + # if failed go back to old rsync mode + if [[ $RSYNC_MODE == false ]]; then + if $LFS migrate -c${COUNT} ${SIZE} "$OLDNAME"; then + $ECHO "done" + continue + else + echo "falling back to rsync-based migration" + RSYNC_MODE=true + fi + fi + NEWNAME=$(mktemp $UNLINK "$OLDNAME.tmp.XXXXXX") if [ $? -ne 0 -o -z "$NEWNAME" ]; then echo -e "\r$OLDNAME: can't make temp file, skipped" 1>&2 continue fi - [ "$UNLINK" ] && $LFS setstripe -c${COUNT} -S${SIZE} "$NEWNAME" + [ "$UNLINK" ] && $LFS setstripe -c${COUNT} ${SIZE} "$NEWNAME" # we use --inplace, since we created our own temp file already if ! $RSYNC -a --inplace $RSYNC_OPTS "$OLDNAME" "$NEWNAME";then