Move filesystem mounting into a new "fs" init level

Devices with non-MTD storage need to override the filesystem mounting
commands in init.rc.  Moving them to a new "fs" init level allows a
custom init.<device>.rc to handle the mounting.

Change-Id: If0e655139b9734650fb798b6eb0a90e2241fc29b
diff --git a/init/init.c b/init/init.c
index 4d98cc2..65d3d84 100755
--- a/init/init.c
+++ b/init/init.c
@@ -929,6 +929,9 @@
 
         /* execute all the boot actions to get us started */
     action_for_each_trigger("init", action_add_queue_tail);
+    action_for_each_trigger("early-fs", action_add_queue_tail);
+    action_for_each_trigger("fs", action_add_queue_tail);
+    action_for_each_trigger("post-fs", action_add_queue_tail);
     drain_action_queue();
 
         /* read any property files on system or data and
diff --git a/rootdir/init.rc b/rootdir/init.rc
index 63769f5..04e3960 100644
--- a/rootdir/init.rc
+++ b/rootdir/init.rc
@@ -80,13 +80,16 @@
     # 5.0 %
     write /dev/cpuctl/bg_non_interactive/cpu.shares 52
 
+on fs
 # mount mtd partitions
     # Mount /system rw first to give the filesystem a chance to save a checkpoint
     mount yaffs2 mtd@system /system
     mount yaffs2 mtd@system /system ro remount
-
-    # We chown/chmod /data again so because mount is run as root + defaults
     mount yaffs2 mtd@userdata /data nosuid nodev
+    mount yaffs2 mtd@cache /cache nosuid nodev
+
+on post-fs
+    # We chown/chmod /data again so because mount is run as root + defaults
     chown system system /data
     chmod 0771 /data
 
@@ -110,7 +113,6 @@
     write /proc/apanic_console 1
 
     # Same reason as /data above
-    mount yaffs2 mtd@cache /cache nosuid nodev
     chown system cache /cache
     chmod 0770 /cache