+# Adaptive Timeouts funcs
+
+at_is_valid() {
+ if [ -z "$AT_MAX_PATH" ]; then
+ AT_MAX_PATH=$(do_facet $SINGLEMDS "find /sys/ -name at_max")
+ [ -z "$AT_MAX_PATH" ] && echo "missing /sys/.../at_max " && return 1
+ fi
+ return 0
+}
+
+at_is_enabled() {
+ at_is_valid || error "invalid call"
+
+ # only check mds, we assume at_max is the same on all nodes
+ local at_max=$(do_facet $SINGLEMDS "cat $AT_MAX_PATH")
+ if [ $at_max -eq 0 ]; then
+ return 1
+ else
+ return 0
+ fi
+}
+
+at_max_get() {
+ local facet=$1
+
+ at_is_valid || error "invalid call"
+
+ # suppose that all ost-s has the same at_max set
+ if [ $facet == "ost" ]; then
+ do_facet ost1 "cat $AT_MAX_PATH"
+ else
+ do_facet $facet "cat $AT_MAX_PATH"
+ fi
+}
+
+at_max_set() {
+ local at_max=$1
+ shift
+
+ at_is_valid || error "invalid call"
+
+ local facet
+ for facet in $@; do
+ if [ $facet == "ost" ]; then
+ for i in `seq $OSTCOUNT`; do
+ do_facet ost$i "echo $at_max > $AT_MAX_PATH"
+ done
+ elif [ $facet == "mds" ]; then
+ for i in `seq $MDSCOUNT`; do
+ do_facet mds$i "echo $at_max > $AT_MAX_PATH"
+ done
+ else
+ do_facet $facet "echo $at_max > $AT_MAX_PATH"
+ fi
+ done
+}
+
+##################################