From 1338bd66d5285b5bde3c010be2706527845d08172fa9d91e4a36d8ca2a7c1586 Mon Sep 17 00:00:00 2001 From: wlfb Date: Fri, 17 Jul 2026 19:45:36 +0200 Subject: [PATCH] fix: Inbox/Uploads unter gemeinsamem Bind-Mount (EXDEV bei Path.replace) Beim E2E-Smoke-Test schlug der Import mit 'Invalid cross-device link' fehl: rename() funktioniert nicht ueber zwei getrennte Bind-Mounts. Inbox und Uploads liegen jetzt unter einem einzigen /data-Mount. Co-Authored-By: Claude Fable 5 --- create_pod_finance.sh | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/create_pod_finance.sh b/create_pod_finance.sh index dc39cb8..a76ac0c 100755 --- a/create_pod_finance.sh +++ b/create_pod_finance.sh @@ -31,8 +31,15 @@ GRAFANA_CONTAINER_PORT='3000' BIND_DIR="$HOME/.local/share/$POD_NAME" POSTGRES_DATA_DIR="$BIND_DIR/postgres-data" GRAFANA_DATA_DIR="$BIND_DIR/grafana-data" -INBOX_DIR="$BIND_DIR/inbox" -UPLOADS_DIR="$BIND_DIR/uploads" +# inbox and uploads must live under one shared bind mount: process_pdf() +# moves a file from inbox to uploads via Path.replace() (os.replace/rename), +# which fails with EXDEV ("Invalid cross-device link") across two separate +# bind mounts even when both point at the same underlying host filesystem +# (Linux permits a filesystem to be mounted at multiple points, but rename() +# does not work across different mount points - see `man 2 rename`). +DATA_DIR="$BIND_DIR/data" +INBOX_DIR="$DATA_DIR/inbox" +UPLOADS_DIR="$DATA_DIR/uploads" USER_SYSTEMD_DIR="$HOME/.config/systemd/user" FINANCE_DIR="$HOME/bin/finance" @@ -142,8 +149,7 @@ podman run -d --name "$API_CTR_NAME" --pod "$POD_NAME" \ -e FB_GUI_PASSWORD_HASH \ -e FB_INBOX_DIR=/data/inbox \ -e FB_UPLOADS_DIR=/data/uploads \ - -v "$INBOX_DIR:/data/inbox:Z" \ - -v "$UPLOADS_DIR:/data/uploads:Z" \ + -v "$DATA_DIR:/data:Z" \ "$API_IMAGE" echo "Container '$API_CTR_NAME' started (rc=$?)"