Change-Id: Id6ee1fed1eebbaa6d3a9e6117910f00a56378da4
diff --git a/roots.c b/roots.c
index 7c4e241..4ef5c37 100644
--- a/roots.c
+++ b/roots.c
@@ -70,11 +70,11 @@
                 device_volumes = realloc(device_volumes, alloc*sizeof(Volume));
             }
             device_volumes[num_volumes].mount_point = strdup(mount_point);
-            device_volumes[num_volumes].fs_type = strdup(fs_type);
+            device_volumes[num_volumes].fs_type = fs_type2 != NULL ? strdup(fs_type2) : strdup(fs_type);
             device_volumes[num_volumes].device = strdup(device);
             device_volumes[num_volumes].device2 =
                 (device2 != NULL && strcmp(device2, "NULL") != 0) ? strdup(device2) : NULL;
-            device_volumes[num_volumes].fs_type2 = (fs_type2 != NULL && strcmp(fs_type2, "NULL") != 0) ? strdup(fs_type2) : NULL;
+            device_volumes[num_volumes].fs_type2 = fs_type2 != NULL ? strdup(fs_type) : NULL;
             ++num_volumes;
         } else {
             LOGE("skipping malformed recovery.fstab line: %s\n", original);
@@ -160,14 +160,14 @@
                strcmp(v->fs_type, "ext3") == 0 ||
                strcmp(v->fs_type, "vfat") == 0) {
         // try fs type 2 first
-        if ((result = try_mount(v->device, v->mount_point, v->fs_type2)) == 0)
-            return 0;
-        if ((result = try_mount(v->device2, v->mount_point, v->fs_type2)) == 0)
-            return 0;
         if ((result = try_mount(v->device, v->mount_point, v->fs_type)) == 0)
             return 0;
         if ((result = try_mount(v->device2, v->mount_point, v->fs_type)) == 0)
             return 0;
+        if ((result = try_mount(v->device, v->mount_point, v->fs_type2)) == 0)
+            return 0;
+        if ((result = try_mount(v->device2, v->mount_point, v->fs_type2)) == 0)
+            return 0;
         return result;
     } else {
         // let's try mounting with the mount binary and hope for the best.