diff --git a/roles/archbuild/files/clean-chroots b/roles/archbuild/files/clean-chroots
index 476ef2465362189f2ef0bcd3f0d9461af7d6e63b..02b80a615c6b2e0b5c1bfc4092ea5a762d0bac02 100755
--- a/roles/archbuild/files/clean-chroots
+++ b/roles/archbuild/files/clean-chroots
@@ -13,6 +13,14 @@ echo "<6>Deleting ${#chroots} chroots"
 
 if btrfs filesystem df . &>/dev/null; then
   remove() {
+    local subvol
+
+    test -d $1
+    find $1 -mindepth 1 -xdev -depth -inum 256 -print0 |
+      while IFS= read -d $'\0' -r subvol; do
+        remove $subvol
+      done
+
     btrfs sub del -- $1 &>/dev/null
   }
 else
@@ -41,3 +49,5 @@ done
 
 df -HT .
 exit $ret
+
+# vim:set sw=2 et: