diff --git a/Android.mk b/Android.mk
index 50627b9..54f4054 100644
--- a/Android.mk
+++ b/Android.mk
@@ -89,7 +89,7 @@
 
 ifeq ($(TARGET_USERIMAGES_USE_F2FS),true)
 ifeq ($(HOST_OS),linux)
-LOCAL_REQUIRED_MODULES += mkfs.f2fs
+LOCAL_REQUIRED_MODULES += sload.f2fs mkfs.f2fs
 endif
 endif
 
diff --git a/applypatch/applypatch.cpp b/applypatch/applypatch.cpp
index 41a72eb..04b964b 100644
--- a/applypatch/applypatch.cpp
+++ b/applypatch/applypatch.cpp
@@ -58,12 +58,13 @@
     return LoadPartitionContents(filename, file);
   }
 
-  if (stat(filename, &file->st) == -1) {
+  struct stat sb;
+  if (stat(filename, &sb) == -1) {
     printf("failed to stat \"%s\": %s\n", filename, strerror(errno));
     return -1;
   }
 
-  std::vector<unsigned char> data(file->st.st_size);
+  std::vector<unsigned char> data(sb.st_size);
   unique_file f(ota_fopen(filename, "rb"));
   if (!f) {
     printf("failed to open \"%s\": %s\n", filename, strerror(errno));
@@ -180,10 +181,6 @@
 
   buffer.resize(buffer_size);
   file->data = std::move(buffer);
-  // Fake some stat() info.
-  file->st.st_mode = 0644;
-  file->st.st_uid = 0;
-  file->st.st_gid = 0;
 
   return 0;
 }
@@ -212,15 +209,6 @@
     return -1;
   }
 
-  if (chmod(filename, file->st.st_mode) != 0) {
-    printf("chmod of \"%s\" failed: %s\n", filename, strerror(errno));
-    return -1;
-  }
-  if (chown(filename, file->st.st_uid, file->st.st_gid) != 0) {
-    printf("chown of \"%s\" failed: %s\n", filename, strerror(errno));
-    return -1;
-  }
-
   return 0;
 }
 
diff --git a/applypatch/include/applypatch/applypatch.h b/applypatch/include/applypatch/applypatch.h
index 6d7ffd7..c8ad915 100644
--- a/applypatch/include/applypatch/applypatch.h
+++ b/applypatch/include/applypatch/applypatch.h
@@ -18,7 +18,6 @@
 #define _APPLYPATCH_H
 
 #include <stdint.h>
-#include <sys/stat.h>
 
 #include <functional>
 #include <memory>
@@ -33,7 +32,6 @@
 struct FileContents {
   uint8_t sha1[SHA_DIGEST_LENGTH];
   std::vector<unsigned char> data;
-  struct stat st;
 };
 
 // When there isn't enough room on the target filesystem to hold the patched version of the file,
diff --git a/etc/init.rc b/etc/init.rc
index d8121cc..0fc6c4c 100644
--- a/etc/init.rc
+++ b/etc/init.rc
@@ -11,6 +11,7 @@
     export ANDROID_DATA /data
     export EXTERNAL_STORAGE /sdcard
 
+    symlink /system/bin /bin
     symlink /system/etc /etc
 
     mount cgroup none /acct cpuacct
diff --git a/roots.cpp b/roots.cpp
index eb299ad..e2d5d65 100644
--- a/roots.cpp
+++ b/roots.cpp
@@ -324,16 +324,23 @@
   }
 
   // Has to be f2fs because we checked earlier.
-  std::vector<std::string> f2fs_args = { "/sbin/mkfs.f2fs", "-d1", "-f",
-                                         "-O", "encrypt", "-O", "quota",
-                                         v->blk_device };
+  std::string cmd("/sbin/mkfs.f2fs");
+  std::vector<std::string> make_f2fs_cmd = { cmd,       "-d1", "-f",    "-O",
+                                             "encrypt", "-O",  "quota", v->blk_device };
   if (length >= 512) {
-    f2fs_args.push_back(std::to_string(length / 512));
+    make_f2fs_cmd.push_back(std::to_string(length / 512));
   }
 
-  int result = exec_cmd(f2fs_args);
+  int result = exec_cmd(make_f2fs_cmd);
+  if (result == 0 && directory != nullptr) {
+    cmd = "/sbin/sload.f2fs";
+    std::vector<std::string> sload_f2fs_cmd = {
+      cmd, "-f", directory, "-t", volume, v->blk_device,
+    };
+    result = exec_cmd(sload_f2fs_cmd);
+  }
   if (result != 0) {
-    PLOG(ERROR) << "format_volume: Failed to make f2fs on " << v->blk_device;
+    PLOG(ERROR) << "format_volume: Failed " << cmd << " on " << v->blk_device;
     return -1;
   }
   return 0;
diff --git a/updater/install.cpp b/updater/install.cpp
index 870b857..b83d30f 100644
--- a/updater/install.cpp
+++ b/updater/install.cpp
@@ -318,6 +318,15 @@
       LOG(ERROR) << name << ": mkfs.f2fs failed (" << status << ") on " << location;
       return StringValue("");
     }
+
+    const char* sload_argv[] = { "/sbin/sload.f2fs", "-t", mount_point.c_str(), location.c_str(),
+                                 nullptr };
+    status = exec_cmd(sload_argv[0], const_cast<char**>(sload_argv));
+    if (status != 0) {
+      LOG(ERROR) << name << ": sload.f2fs failed (" << status << ") on " << location;
+      return StringValue("");
+    }
+
     return StringValue(location);
   } else {
     LOG(ERROR) << name << ": unsupported fs_type \"" << fs_type << "\" partition_type \""
