diff --git a/delta_performer_integration_test.cc b/delta_performer_integration_test.cc
index eddce9c..143d21d 100644
--- a/delta_performer_integration_test.cc
+++ b/delta_performer_integration_test.cc
@@ -305,11 +305,6 @@
 
   state->image_size = utils::FileSize(state->a_img);
 
-  // Extend the "partitions" holding the file system a bit.
-  EXPECT_EQ(0, HANDLE_EINTR(truncate(state->a_img.c_str(),
-                                     state->image_size + 1024 * 1024)));
-  EXPECT_EQ(state->image_size + 1024 * 1024, utils::FileSize(state->a_img));
-
   // Create ImageInfo A & B
   ImageInfo old_image_info;
   ImageInfo new_image_info;
@@ -376,10 +371,8 @@
     old_image_info = new_image_info;
   } else {
     if (minor_version == kSourceMinorPayloadVersion) {
-      // Create a result image with image_size bytes of garbage, followed by
-      // zeroes after the rootfs, like image A and B have.
+      // Create a result image with image_size bytes of garbage.
       chromeos::Blob ones(state->image_size, 0xff);
-      ones.insert(ones.end(), 1024 * 1024, 0);
       EXPECT_TRUE(utils::WriteFile(state->result_img.c_str(),
                                    ones.data(),
                                    ones.size()));
@@ -388,9 +381,6 @@
     }
 
     test_utils::CreateExtImageAtPath(state->b_img, nullptr);
-    EXPECT_EQ(0, HANDLE_EINTR(truncate(state->b_img.c_str(),
-                                       state->image_size + 1024 * 1024)));
-    EXPECT_EQ(state->image_size + 1024 * 1024, utils::FileSize(state->b_img));
 
     // Make some changes to the B image.
     string b_mnt;
@@ -537,6 +527,13 @@
             private_key,
             &state->metadata_size));
   }
+  // Extend the "partitions" holding the file system a bit.
+  EXPECT_EQ(0, HANDLE_EINTR(truncate(state->a_img.c_str(),
+                                     state->image_size + 1024 * 1024)));
+  EXPECT_EQ(state->image_size + 1024 * 1024, utils::FileSize(state->a_img));
+  EXPECT_EQ(0, HANDLE_EINTR(truncate(state->b_img.c_str(),
+                                     state->image_size + 1024 * 1024)));
+  EXPECT_EQ(state->image_size + 1024 * 1024, utils::FileSize(state->b_img));
 
   if (signature_test == kSignatureGeneratedPlaceholder ||
       signature_test == kSignatureGeneratedPlaceholderMismatch) {
diff --git a/payload_generator/payload_generation_config.cc b/payload_generator/payload_generation_config.cc
index 786c4e2..2de696a 100644
--- a/payload_generator/payload_generation_config.cc
+++ b/payload_generator/payload_generation_config.cc
@@ -33,6 +33,16 @@
   // The requested size is within the limits of the file.
   TEST_AND_RETURN_FALSE(static_cast<off_t>(size) <=
                         utils::FileSize(path.c_str()));
+  // TODO(deymo): The delta generator algorithm doesn't support a block size
+  // different than 4 KiB. Remove this check once that's fixed. crbug.com/455045
+  int block_count, block_size;
+  if (utils::GetFilesystemSize(path, &block_count, &block_size) &&
+      block_size != 4096) {
+   LOG(ERROR) << "The filesystem provided in " << path
+              << " has a block size of " << block_size
+              << " but delta_generator only supports 4096.";
+   return false;
+  }
   return true;
 }
 
@@ -67,22 +77,9 @@
 
 bool ImageConfig::LoadImageSize() {
   TEST_AND_RETURN_FALSE(!rootfs.path.empty());
-  int rootfs_block_count, rootfs_block_size;
-  TEST_AND_RETURN_FALSE(utils::GetFilesystemSize(rootfs.path,
-                                                 &rootfs_block_count,
-                                                 &rootfs_block_size));
-  rootfs.size = static_cast<uint64_t>(rootfs_block_count) * rootfs_block_size;
+  rootfs.size = utils::FileSize(rootfs.path);
   if (!kernel.path.empty())
     kernel.size = utils::FileSize(kernel.path);
-
-  // TODO(deymo): The delta generator algorithm doesn't support a block size
-  // different than 4 KiB. Remove this check once that's fixed. crbug.com/455045
-  if (rootfs_block_size != 4096) {
-    LOG(ERROR) << "The filesystem provided in " << rootfs.path
-               << " has a block size of " << rootfs_block_size
-               << " but delta_generator only supports 4096.";
-    return false;
-  }
   return true;
 }
 
