build_image: Do not do fstrim for unmounted filesystems

CL:751809 removed a check to bypass zeroing unallocated blocks when the
filesystem is unmounted like squashfs or ubifs partitions. This CL puts
that check back.

BUG=chromium:780291,chromium:782453,b:69042809
TEST=precq runs

Change-Id: Ia81926c3d1821e1ee2ea84b7cabe846f8fdbde2d
Reviewed-on: https://chromium-review.googlesource.com/757158
Commit-Ready: Ian Coolidge <icoolidge@google.com>
Tested-by: Ian Coolidge <icoolidge@google.com>
Reviewed-by: Gwendal Grignou <gwendal@google.com>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
diff --git a/build_library/base_image_util.sh b/build_library/base_image_util.sh
index ff98a8d..208c4e9 100755
--- a/build_library/base_image_util.sh
+++ b/build_library/base_image_util.sh
@@ -29,6 +29,19 @@
   set -e
 }
 
+zero_free_space() {
+  local fs_mount_point=$1
+
+  if ! mountpoint -q "${fs_mount_point}"; then
+    info "Not zeroing freespace in ${fs_mount_point} since it isn't a mounted" \
+        "filesystem. This is normal for squashfs and ubifs partitions."
+    return 0
+  fi
+
+  info "Zeroing freespace in ${fs_mount_point}"
+  sudo fstrim -v "${fs_mount_point}"
+}
+
 # create_dev_install_lists updates package lists used by
 # chromeos-base/dev-install
 create_dev_install_lists() {
@@ -377,8 +390,8 @@
   fi
 
   # Zero rootfs free space to make it more compressible so auto-update
-  # payloads become smaller
-  sudo fstrim -v "${root_fs_dir}"
+  # payloads become smaller.
+  zero_free_space "${root_fs_dir}"
 
   unmount_image
   trap - EXIT