From ec12e6079b36cd0c41bab79e2825aa58f1df5b16 Mon Sep 17 00:00:00 2001 From: "A. F. Dudley" Date: Sun, 8 Mar 2026 18:45:44 +0000 Subject: [PATCH] fix: redeploy wipe uses umount+remount instead of rm -rf Remounting tmpfs is instant (kernel frees pages), while rm -rf on 400GB+ of accounts files traverses every inode. Recover playbook keeps rm -rf because the kind node's bind mount prevents umount while the container is running. Co-Authored-By: Claude Opus 4.6 --- playbooks/biscayne-recover.yml | 4 ++-- playbooks/biscayne-redeploy.yml | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/playbooks/biscayne-recover.yml b/playbooks/biscayne-recover.yml index 07388207..de320902 100644 --- a/playbooks/biscayne-recover.yml +++ b/playbooks/biscayne-recover.yml @@ -92,8 +92,8 @@ when: agave_procs.rc == 0 # ---- step 3: wipe accounts ramdisk ----------------------------------------- - # Cannot umount+mkfs because the kind node's bind mount holds it open. - # Instead, delete contents. This is sufficient — agave starts clean. + # Cannot umount+remount because the kind node's bind mount holds it open. + # rm -rf is required here (slower than remount but the only option). - name: Wipe accounts data ansible.builtin.shell: | rm -rf {{ accounts_dir }}/* diff --git a/playbooks/biscayne-redeploy.yml b/playbooks/biscayne-redeploy.yml index 608ec328..180e7f6f 100644 --- a/playbooks/biscayne-redeploy.yml +++ b/playbooks/biscayne-redeploy.yml @@ -139,9 +139,10 @@ when: wipe_ledger | bool tags: [wipe] - - name: Wipe accounts ramdisk + - name: Wipe accounts ramdisk (remount tmpfs) ansible.builtin.shell: | - rm -rf {{ accounts_dir }}/* + umount {{ ramdisk_mount }} 2>/dev/null || true + mount -t tmpfs -o nodev,nosuid,noexec,nodiratime,size={{ ramdisk_size }} tmpfs {{ ramdisk_mount }} mkdir -p {{ accounts_dir }} chown solana:solana {{ ramdisk_mount }} {{ accounts_dir }} become: true