vold: support F2FS compression

Bug: 134580167
Change-Id: Iadd001dc5ce0f91a4337f5b27ea8cc54f9760b0d
Signed-off-by: Jaegeuk Kim <jaegeuk@google.com>
diff --git a/main.cpp b/main.cpp
index ebe5510..1c9eec7 100644
--- a/main.cpp
+++ b/main.cpp
@@ -42,7 +42,7 @@
 #include <sys/types.h>
 
 static int process_config(VolumeManager* vm, bool* has_adoptable, bool* has_quota,
-                          bool* has_reserved);
+                          bool* has_reserved, bool* has_compress);
 static void coldboot(const char* path);
 static void parse_args(int argc, char** argv);
 
@@ -103,8 +103,9 @@
     bool has_adoptable;
     bool has_quota;
     bool has_reserved;
+    bool has_compress;
 
-    if (process_config(vm, &has_adoptable, &has_quota, &has_reserved)) {
+    if (process_config(vm, &has_adoptable, &has_quota, &has_reserved, &has_compress)) {
         PLOG(ERROR) << "Error reading configuration... continuing anyways";
     }
 
@@ -131,6 +132,7 @@
     android::base::SetProperty("vold.has_adoptable", has_adoptable ? "1" : "0");
     android::base::SetProperty("vold.has_quota", has_quota ? "1" : "0");
     android::base::SetProperty("vold.has_reserved", has_reserved ? "1" : "0");
+    android::base::SetProperty("vold.has_compress", has_compress ? "1" : "0");
 
     // Do coldboot here so it won't block booting,
     // also the cold boot is needed in case we have flash drive
@@ -214,7 +216,7 @@
 }
 
 static int process_config(VolumeManager* vm, bool* has_adoptable, bool* has_quota,
-                          bool* has_reserved) {
+                          bool* has_reserved, bool* has_compress) {
     ATRACE_NAME("process_config");
 
     if (!ReadDefaultFstab(&fstab_default)) {
@@ -226,6 +228,7 @@
     *has_adoptable = false;
     *has_quota = false;
     *has_reserved = false;
+    *has_compress = false;
     for (auto& entry : fstab_default) {
         if (entry.fs_mgr_flags.quota) {
             *has_quota = true;
@@ -233,6 +236,9 @@
         if (entry.reserved_size > 0) {
             *has_reserved = true;
         }
+        if (entry.fs_mgr_flags.fs_compress) {
+            *has_compress = true;
+        }
 
         /* Make sure logical partitions have an updated blk_device. */
         if (entry.fs_mgr_flags.logical && !fs_mgr_update_logical_partition(&entry)) {