A melhor solução que encontrei até agora é obter o espaço livre mínimo de:
sudo btrfs filesystem usage -b /mountpoint
( -b
será impresso em bytes)
Em seguida, redimensione por esse valor:
sudo btrfs filesystem resize -71890542592 /mountpoint
Onde 71890542592
é o espaço livre mínimo em bytes.
Como alternativa, se houver uma grande diferença entre o min free e o unallocated, você pode optar por usar (não alocado * 0,9), pois o redimensionamento pelos bytes não alocados exatos parece falhar.
Você pode reduzir repetidamente em pequenas quantidades até que o redimensionamento falhe:
while sudo btrfs filesystem resize -200M /mountpoint; do true; done
Este não é exatamente um único passo, mas pelo menos na maior parte automatizado. O loop por si só pode ser um único passo, mas provavelmente levará mais tempo fazendo pequenos redimensionamentos incrementais em vez de encolher inicialmente por um grande bloco.