From d97f4c4f4241f1f9abd30797b76b525a86e3e586 Mon Sep 17 00:00:00 2001 From: Levi Neely <141506390+lneely@users.noreply.github.com> Date: Thu, 21 May 2026 09:00:06 +0200 Subject: [PATCH] ellie: transparent remount on stale FUSE mount --- ellie.el | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/ellie.el b/ellie.el index 9b5f76a..d678430 100644 --- a/ellie.el +++ b/ellie.el @@ -108,16 +108,31 @@ Signals `user-error' if no session is active." ;;;; ──────────────── Low-level file helpers ──────────────── +(defun ellie--remount () + "Run ollie-remount to recover a stale FUSE mount." + (call-process "ollie-remount" nil nil nil)) + (defun ellie--fwrite (path text) - "Write TEXT to PATH, suppressing the minibuffer message." - (write-region text nil path nil 'silent)) + "Write TEXT to PATH, retrying after remount on failure." + (condition-case nil + (write-region text nil path nil 'silent) + (file-error + (ellie--remount) + (write-region text nil path nil 'silent)))) (defun ellie--fread (path) - "Return the contents of PATH as a string, or nil if it does not exist." - (when (file-exists-p path) - (with-temp-buffer - (insert-file-contents path) - (buffer-string)))) + "Return the contents of PATH as a string, retrying after remount on failure." + (condition-case nil + (when (file-exists-p path) + (with-temp-buffer + (insert-file-contents path) + (buffer-string))) + (file-error + (ellie--remount) + (when (file-exists-p path) + (with-temp-buffer + (insert-file-contents path) + (buffer-string)))))) ;;;; ──────────────── Session enumeration ────────────────