Skip to content

Commit

Permalink
Fix an issue where unmount would fail because of lingering processes
Browse files Browse the repository at this point in the history
Update cleanup_image script to use fuser and umount --lazy --force in last
resort.

Fixes #105
  • Loading branch information
pguyot committed May 13, 2024
1 parent 8a1aaef commit 83414dc
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 6 deletions.
24 changes: 24 additions & 0 deletions .github/workflows/test-unmount-force.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Test unmount succeeds even if processes are still running
on:
push:
branches:
- 'main'
- 'releases/**'
pull_request:
workflow_dispatch:

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./ # pguyot/arm-runner-action@HEAD
with:
image_additional_mb: 1024
commands: |
sudo apt update -y
sudo apt install xvfb fluxbox -y
export DISPLAY=:0.0
Xvfb :0 -screen 0 1280x720x24 > /dev/null 2>&1 &
sleep 1
fluxbox > /dev/null 2>&1 &
12 changes: 6 additions & 6 deletions cleanup_image.sh
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,12 @@ if [[ -d "${mount}" ]]; then
(cat /dev/zero >"${mount}/zero.fill" 2>/dev/null || true); sync; rm -f "${mount}/zero.fill"
fi

umount "${mount}/dev/pts" || true
umount "${mount}/dev" || true
umount "${mount}/proc" || true
umount "${mount}/sys" || true
umount "${mount}/boot" || true
umount "${mount}" || true
umount "${mount}/dev/pts" || fuser -ckv "${mount}/dev/pts" || umount --force --lazy "${mount}/dev/pts" || true
umount "${mount}/dev" || fuser -ckv "${mount}/dev" || umount --force --lazy "${mount}/dev" || true
umount "${mount}/proc" || fuser -ckv "${mount}/proc" || umount --force --lazy "${mount}/proc" || true
umount "${mount}/sys" || fuser -ckv "${mount}/sys" || umount --force --lazy "${mount}/sys" || true
umount "${mount}/boot" || fuser -ckv "${mount}/boot" || umount --force --lazy "${mount}/boot" || true
umount "${mount}" || fuser -ckv "${mount}" || umount --force --lazy "${mount}" || true

if [[ "${optimize}x" == "x" || "${optimize}x" == "yesx" ]]; then
rootfs_partnum=${rootpartition}
Expand Down

0 comments on commit 83414dc

Please sign in to comment.