summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
f0a67ca)
Otherwise, during recovery, par2 sometimes fails to read huge blocks
with 'Cannot allocate memory' errors.
+max_block_size=$((128*1024*1024))
block_size_is_a_multiple_of=4 # par2 requires that this be at least 4
blocks_per_file=10
block_size_is_a_multiple_of=4 # par2 requires that this be at least 4
blocks_per_file=10
-while getopts b:m:r:v: opt;do
+while getopts b:m:r:v:x: opt;do
case $opt in
b) blocks_per_file=$OPTARG;;
m) block_size_is_a_multiple_of=$OPTARG;;
r) redundancy=$OPTARG;;
v) parse_volume_list "$OPTARG";;
case $opt in
b) blocks_per_file=$OPTARG;;
m) block_size_is_a_multiple_of=$OPTARG;;
r) redundancy=$OPTARG;;
v) parse_volume_list "$OPTARG";;
- *) echo 'usage: annex-ec [-v remote1,remote2,...] [-r N] file file...' >&2; exit 1;;
+ x) max_block_size=$OPTARG;;
+ *) echo 'usage: annex-ec [-v remote1,remote2,...] [-r N] [-b N] [-x N] [-m N] file file...' >&2; exit 1;;
esac
done
shift $((OPTIND - 1))
esac
done
shift $((OPTIND - 1))
git annex get -- "$@"
max_size=$(find -L "$@" -printf '%s\n' | sort -nr | head -n1)
git annex get -- "$@"
max_size=$(find -L "$@" -printf '%s\n' | sort -nr | head -n1)
-block_size=$(( ((max_size/(block_size_is_a_multiple_of*blocks_per_file))+1) * block_size_is_a_multiple_of))
+while true;do
+ block_size=$(( ((max_size/(block_size_is_a_multiple_of*blocks_per_file))+1) * block_size_is_a_multiple_of))
+ if (( block_size < max_block_size ));then break;fi
+ blocks_per_file=$((blocks_per_file + 1))
+done