Add compression, btree_usage, reconcile and options
This commit is contained in:
+97
-27
@@ -18,40 +18,43 @@ function convert_to_bytes() {
|
||||
}' <<< "$1"
|
||||
}
|
||||
|
||||
function ensure_comma() {
|
||||
if [[ $FIRST -eq 1 ]]
|
||||
then
|
||||
FIRST=
|
||||
else
|
||||
echo -n ,
|
||||
fi
|
||||
}
|
||||
|
||||
FSPATH="/mnt"
|
||||
|
||||
UUID=
|
||||
|
||||
PARSER_STATE=0
|
||||
#echo switch to 0
|
||||
while IFS= read -r line; do
|
||||
case $PARSER_STATE in
|
||||
0)
|
||||
if [[ $line =~ ^Filesystem:[[:space:]]+([^[:space:]]+)$ ]]
|
||||
then
|
||||
uuid="${BASH_REMATCH[1]}"
|
||||
# echo "uuid=$UUID"
|
||||
elif [[ $line == Data\ type* ]]
|
||||
then
|
||||
#echo switch to 1
|
||||
PARSER_STATE=1
|
||||
#continue
|
||||
elif [[ $line == "Compression:" ]]
|
||||
then
|
||||
#echo switch to 2
|
||||
echo -n "bcachefs_compression,fspath=\"$FSPATH\",uuid=\"$uuid\" "
|
||||
FIRST=1
|
||||
PARSER_STATE=2
|
||||
#continue
|
||||
elif [[ $line == "Btree usage:" ]]
|
||||
then
|
||||
#echo switch to 3
|
||||
echo -n "bcachefs_btree_usage,fspath=\"$FSPATH\",uuid=\"$uuid\" "
|
||||
FIRST=1
|
||||
PARSER_STATE=3
|
||||
#continue
|
||||
elif [[ $line == "Pending reconcile:" ]]
|
||||
elif [[ $line =~ ^Pending\ reconcile: ]]
|
||||
then
|
||||
#echo switch to 4
|
||||
echo -n "bcachefs_reconcile,fspath=\"$FSPATH\",uuid=\"$uuid\" "
|
||||
FIRST=1
|
||||
PARSER_STATE=4
|
||||
#continue
|
||||
REMAINING=(replicas checksum erasure_code compression target high_priority pending)
|
||||
elif [[ $line =~ ^([^ ]+)\ \(device\ ([0-9]+)\):[[:space:]]+([^[:space:]]+)[[:space:]]+([^[:space:]]+)[[:space:]]+([0-9]+)%$ ]]
|
||||
then
|
||||
blockdev="${BASH_REMATCH[3]}"
|
||||
@@ -59,53 +62,103 @@ while IFS= read -r line; do
|
||||
then
|
||||
blockdev="/dev/$blockdev"
|
||||
fi
|
||||
echo -n "bcachefs,fspath=\"$FSPATH\",UUID=\"$UUID\",devlabel=\"${BASH_REMATCH[1]}\",devid=${BASH_REMATCH[2]},blockdev=\"$blockdev\" mode=\"${BASH_REMATCH[4]}\",usage=${BASH_REMATCH[5]}"
|
||||
echo -n "bcachefs_devices,fspath=\"$FSPATH\",uuid=\"$uuid\",devlabel=\"${BASH_REMATCH[1]}\",devid=${BASH_REMATCH[2]},blockdev=\"$blockdev\" mode=\"${BASH_REMATCH[4]}\",usage=${BASH_REMATCH[5]}"
|
||||
|
||||
#echo switch to 5 label="$label" devid="$devid" block_device="$block_device" mode="$mode" usage="$usage"
|
||||
PARSER_STATE=5
|
||||
#continue
|
||||
#else
|
||||
#echo unknown?
|
||||
fi
|
||||
;;
|
||||
1)
|
||||
if [[ "$line" == "" ]]
|
||||
then
|
||||
#echo switch to 0
|
||||
PARSER_STATE=0
|
||||
#continue
|
||||
fi
|
||||
;;
|
||||
2)
|
||||
if [[ "$line" == "" ]]
|
||||
then
|
||||
#echo switch to 0
|
||||
echo
|
||||
PARSER_STATE=0
|
||||
#continue
|
||||
elif [[ $line =~ ^([^[:space:]]+)[[:space:]]*(.*)$ ]]
|
||||
then
|
||||
field="${BASH_REMATCH[1]// /_}"
|
||||
rest="${BASH_REMATCH[2]}"
|
||||
|
||||
read -r val1 val2 val3 <<<"$rest"
|
||||
val1="$(convert_to_bytes "$val1")"
|
||||
|
||||
ensure_comma
|
||||
|
||||
echo -n "${field}_compressed=$val1"
|
||||
if [[ ! -z "$val2" ]]
|
||||
then
|
||||
val2="$(convert_to_bytes "$val2")"
|
||||
echo -n ",${field}_uncompressed=$val2"
|
||||
fi
|
||||
if [[ ! -z "$val3" ]]
|
||||
then
|
||||
val3="$(convert_to_bytes "$val3")"
|
||||
echo -n ",${field}_avgextsize=$val3"
|
||||
fi
|
||||
#else
|
||||
#echo unknown?
|
||||
fi
|
||||
;;
|
||||
3)
|
||||
if [[ "$line" == "" ]]
|
||||
then
|
||||
#echo switch to 0
|
||||
echo
|
||||
PARSER_STATE=0
|
||||
#continue
|
||||
elif [[ $line =~ ^([^:]+)[:space:]+(.*)$ ]]
|
||||
then
|
||||
field="${BASH_REMATCH[1]// /_}"
|
||||
val="${BASH_REMATCH[2]}"
|
||||
val="$(convert_to_bytes "$val")"
|
||||
|
||||
ensure_comma
|
||||
|
||||
echo -n "$field=$val"
|
||||
#else
|
||||
#echo unknown?
|
||||
fi
|
||||
;;
|
||||
4)
|
||||
if [[ "$line" == "" ]]
|
||||
then
|
||||
#echo switch to 0
|
||||
for field in "${REMAINING[@]}"
|
||||
do
|
||||
ensure_comma
|
||||
echo -n "${field}_data=0,${field}_metadata=0"
|
||||
done
|
||||
|
||||
echo
|
||||
PARSER_STATE=0
|
||||
#continue
|
||||
elif [[ $line =~ ^([^:]+):[[:space:]]*(.*)$ ]]
|
||||
then
|
||||
field="${BASH_REMATCH[1]// /_}"
|
||||
rest="${BASH_REMATCH[2]}"
|
||||
|
||||
read -r val1 val2 <<<"$rest"
|
||||
val1="$(convert_to_bytes "$val1")"
|
||||
val2="$(convert_to_bytes "$val2")"
|
||||
|
||||
ensure_comma
|
||||
|
||||
echo -n "${field}_data=$val1,${field}_metadata=$val2"
|
||||
|
||||
REMAINING=( "${REMAINING[@]/$field}" )
|
||||
#else
|
||||
#echo unknown?
|
||||
fi
|
||||
;;
|
||||
5)
|
||||
if [[ "$line" == "" ]]
|
||||
then
|
||||
echo
|
||||
#echo switch to 0
|
||||
PARSER_STATE=0
|
||||
#continue
|
||||
elif [[ $line =~ ^[[:space:]]*([^:]+):[[:space:]]*(.*)$ ]]; then
|
||||
elif [[ $line =~ ^[[:space:]]*([^:]+):[[:space:]]*(.*)$ ]]
|
||||
then
|
||||
field="${BASH_REMATCH[1]// /_}"
|
||||
rest="${BASH_REMATCH[2]}"
|
||||
|
||||
@@ -133,3 +186,20 @@ while IFS= read -r line; do
|
||||
# echo "Got line: $line"
|
||||
#fi
|
||||
done < <(sudo bcachefs fs usage -a "$FSPATH")
|
||||
|
||||
cd "/sys/fs/bcachefs/${uuid}/options" || exit 1
|
||||
echo -n "bcachefs_options,fspath=\"$FSPATH\",uuid=\"$uuid\" "
|
||||
FIRST=1
|
||||
for i in *
|
||||
do
|
||||
if [[ $FIRST == 1 ]]
|
||||
then
|
||||
FIRST=
|
||||
else
|
||||
echo -n ,
|
||||
fi
|
||||
|
||||
echo -n "${i}=\"$(cat "$i")\""
|
||||
done
|
||||
|
||||
echo
|
||||
|
||||
Reference in New Issue
Block a user