From 483a6ec25a41dbcf549bff7beb125d7b7ea1d91c Mon Sep 17 00:00:00 2001 From: Sergio Date: Thu, 27 Aug 2026 02:40:17 +0000 Subject: [PATCH] =?UTF-8?q?vig=C3=ADa:=20medir=20los=20FS=20donde=20hammer?= =?UTF-8?q?=20gasta,=20no=20el=20del=20repo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit El store de hammer se mudó al volumen harkaq-cosecha (/dev/sdb, bind-mount sobre ./store, work/sources y work/repos; CARGO_HOME también). Desde eso, medir `$ROOT` mide /mnt/vvv, que hammer COMPARTE con tawasuyu y que ya no es donde gasta. Por qué se movió: tawasuyu repuebla su target a ~62 G/h. El 27/08 se le liberaron 92,9 GiB con cargo clean, se lanzó la campaña con 64 G libres y 70 min después el disco estaba en 237 MB — la tanda abortó en cosmic-applets por un disco que no era suyo. El cargo clean sirve para un pico, no para financiar una campaña larga: el vecino lo recupera entero en una hora. El vigía ahora toma el mínimo de {STORE, work/sources, CARGO_HOME}. Con $ROOT veía 46 G y bajando; ahora ve 84 G reales. --- scripts/reconstruir-corpus.sh | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/scripts/reconstruir-corpus.sh b/scripts/reconstruir-corpus.sh index 1b6ac12b..55c5fc5c 100755 --- a/scripts/reconstruir-corpus.sh +++ b/scripts/reconstruir-corpus.sh @@ -49,14 +49,24 @@ SECO=0; [ "${1:-}" = "--seco" ] && SECO=1 # era 138 G libres en el repo y 19 G en `/`, o sea que el vigía habría dado luz verde mientras el que # se llenaba de verdad era el otro — y llenar `/` no rompe una tanda, rompe la máquina. Se toma el # MÍNIMO de los dos. Si comparten FS, `df` devuelve lo mismo dos veces y esto es inocuo. +# +# ── 2026-08-27: MIRA DÓNDE SE GASTA, NO DÓNDE ESTÁ EL REPO ────────────────────────────────────── +# Medir `$ROOT` dejó de ser correcto al mudar el store al volumen `harkaq-cosecha`. `$ROOT` es +# /mnt/vvv, que hammer COMPARTE con tawasuyu, y tawasuyu repuebla su target a ~62 G/h: el 27/08 se +# comió los 92 G que se le habían liberado en 70 minutos y el vigía abortó la tanda por un disco +# que hammer ya ni usaba. Un vigía que mide el disco de OTRO no protege la tanda, la mata. +# Ahora se miden los tres sitios donde hammer SÍ crece —store, árboles de fuentes y CARGO_HOME— +# y se toma el mínimo. Si comparten FS, `df` repite el número y esto es inocuo. CARGO_H="${CARGO_HOME:-$HOME/.cargo}" avail_gb() { df -BG --output=avail "$1" 2>/dev/null | tail -1 | tr -dc 0-9; } libre_gb() { - local a b - a=$(avail_gb "$ROOT"); b=$(avail_gb "$CARGO_H") - [ -z "${a:-}" ] && a=999999 - [ -z "${b:-}" ] && b=999999 - [ "$a" -le "$b" ] && echo "$a" || echo "$b" + local m=999999 v d + for d in "$STORE" "$ROOT/work/sources" "$CARGO_H"; do + [ -e "$d" ] || continue + v=$(avail_gb "$d"); [ -z "${v:-}" ] && continue + [ "$v" -lt "$m" ] && m=$v + done + echo "$m" } ts() { date -u +%Y-%m-%dT%H:%M:%SZ; }