diff --git a/roles/borg_client/templates/borg-backup.sh.j2 b/roles/borg_client/templates/borg-backup.sh.j2
index 4a333b9780fe9335875abe840151e306ac186599..bfd62ce2add03b367416910b0a58b8abb52179ef 100644
--- a/roles/borg_client/templates/borg-backup.sh.j2
+++ b/roles/borg_client/templates/borg-backup.sh.j2
@@ -6,6 +6,8 @@ src="/"
 snapshotdir="backup-snapshot"
 backup_mountdir="/backup"
 
+declare -a list_of_btrfs_submounts
+
 ##
 #  usage : is_btrfs( $path )
 # return : whether $path is on a btrfs
@@ -22,6 +24,21 @@ delete_snapshot() {
     btrfs subvolume delete --commit-after "$1"
 }
 
+##
+# exit cleanup handler
+##
+cleanup() {
+  if is_btrfs "$src"; then
+      umount -R "$backup_mountdir"
+      for vol in $list_of_btrfs_submounts; do
+          delete_snapshot "$vol/$snapshotdir"
+      done
+      rmdir "$backup_mountdir"
+  fi
+}
+
+trap cleanup EXIT
+
 if is_btrfs "$src"; then
     # List all btrfs submounts we want to backup, e.g. homedir.archlinux.org with "/ /home"
     list_of_btrfs_submounts=$(findmnt -Rl -o target,fstype,options / | grep btrfs | grep -v docker | grep -v "subvol=\/[[:alnum:]]" | cut -d ' ' -f1)
@@ -75,11 +92,3 @@ borg create -v --stats -C zstd \
     -e "$backup_mountdir/var/lib/docker" \
     {{ item['host'] }}/{{ item['dir'] }}::$(date "+%Y%m%d-%H%M%S") "$backup_mountdir"
 borg prune -v {{ item['host'] }}/{{ item['dir'] }} --keep-daily=7 --keep-weekly=4 --keep-monthly=6
-
-if is_btrfs "$src"; then
-    umount -R "$backup_mountdir"
-    for vol in $list_of_btrfs_submounts; do
-        delete_snapshot "$vol/$snapshotdir"
-    done
-    rmdir "$backup_mountdir"
-fi
diff --git a/roles/prometheus_exporters/templates/prometheus-borg-textcollector.service.j2 b/roles/prometheus_exporters/templates/prometheus-borg-textcollector.service.j2
index 593a774eef4860048b1bc2049752d69cdb443531..117b1b4ad5b3922b9a75bf9d9bb19bb1f6260d14 100644
--- a/roles/prometheus_exporters/templates/prometheus-borg-textcollector.service.j2
+++ b/roles/prometheus_exporters/templates/prometheus-borg-textcollector.service.j2
@@ -1,7 +1,9 @@
 [Unit]
 Description=Prometheus Borg Exporter TextCollector
 After=network.target
-ConditionPathExistsGlob=!/root/.cache/borg/*/lock.roster
+# If the backup snapshot path exists, the backup script runs and a borg
+# lockfile exists and we can't run borg list
+ConditionPathExists=!/backup
 
 [Service]
 Type=oneshot