diff --git a/bin/disk-image-create b/bin/disk-image-create
index 5e82d9bca..d706d4dc3 100755
--- a/bin/disk-image-create
+++ b/bin/disk-image-create
@@ -251,14 +251,12 @@ if [ "$IS_RAMDISK" == "0" ]; then
   for IMAGE_TYPE in ${IMAGE_TYPES[@]} ; do
     compress_and_save_image $IMAGE_NAME.$IMAGE_TYPE
   done
-  rm $TMP_IMAGE_PATH
-  cleanup_dirs
-else
-  # This is a ramdisk build, we have already extracted the kernel and ramdisk
-  # by this point.
-  rm $TMP_IMAGE_PATH
 fi
 
+# Always cleanup after ourselves
+rm $TMP_IMAGE_PATH
+cleanup_dirs
+
 case "$IMAGE_ELEMENT" in
   *ironic-agent*)
     rm $IMAGE_NAME.$IMAGE_TYPE
diff --git a/lib/common-functions b/lib/common-functions
index df3475cbe..c876b0960 100644
--- a/lib/common-functions
+++ b/lib/common-functions
@@ -173,7 +173,7 @@ function cleanup_dirs () {
     sudo rm -rf $TMP_BUILD_DIR/built
     sudo rm -rf $TMP_BUILD_DIR/mnt
     sudo umount -f  $TMP_BUILD_DIR $TMP_IMAGE_DIR || true
-    rm -rf $TMP_BUILD_DIR $TMP_IMAGE_DIR
+    rm -rf --one-file-system $TMP_BUILD_DIR $TMP_IMAGE_DIR
 }
 
 # Run a directory of hooks outside the target (that is, no chrooting).
diff --git a/lib/ramdisk-functions b/lib/ramdisk-functions
index 62e27428e..7fa5834d6 100644
--- a/lib/ramdisk-functions
+++ b/lib/ramdisk-functions
@@ -24,20 +24,6 @@ function fullpath() {
   fi
 }
 
-function cleanup () {
-  if [ "$RAMDISK_ELEMENT" != "dracut-ramdisk" ]; then
-    unmount_dir "$TMP_BUILD_DIR/mnt"
-  fi
-  if [ -f "$TMP_IMAGE_PATH" ]; then
-    loopdev=`sudo losetup -j "$TMP_IMAGE_PATH" | cut -d: -f1`
-    if [ -n "$loopdev" ]; then
-      detach_loopback "$loopdev"
-    fi
-  fi
-  unmount_dir "$TMP_BUILD_DIR"
-  rm -rf --one-file-system "$TMP_BUILD_DIR"
-}
-
 function create_ramdisk_base () {
   echo "Creating base system"