JB 4.2.2, additional changes are required to make USB mass storage work.
First of all, the Android mass storage function is disabled in the framework. You need to modify init.usb.rc to this.
diff --git a/imx6/etc/init.usb.rc b/imx6/etc/init.usb.rc
index 0d7c29f..c6f68e3 100644
--- a/imx6/etc/init.usb.rc
+++ b/imx6/etc/init.usb.rc
@@ -42,3 +42,22 @@ on property:sys.usb.config=ptp,adb
start adbd
setprop sys.usb.state ${sys.usb.config}
+# USB massstorage configuration, with adb
+on property:sys.usb.config=mass_storage,adb
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor 18d1
+ write /sys/class/android_usb/android0/idProduct d02
+ write /sys/class/android_usb/android0/functions $sys.usb.config
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state $sys.usb.config
+
+# USB massstorage configuration
+on property:sys.usb.config=mass_storage
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor 18d1
+ write /sys/class/android_usb/android0/idProduct 2d01
+ write /sys/class/android_usb/android0/functions $sys.usb.config
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state $sys.usb.config
+
From JellyBean, the file system of data partition in primary volume (/dev/block/mmcblk0p4) is no longer "vfat" but is "ext4" now. By default, Android always shares this ext4 partition as the USB mass storage device. However, the Android mass_storage function can only accept "vfat" and using other file system type will leads to the "Volume is not format" error. To avoid user data corruption, you cannot share /dev/block/mmcblk0p4. You have modify the Android framework to share either /mnt/extsd or /mnt/udisk as the USB mass storage device.