[Android Software/Hacking General [Developers Only]] CosmicDan:
For those who can't boot with it, try this script. I had to make some minor changes to get it to work on Stock 4.0.4 for the Xperia Play. If it still doesn't work, please uncomment the "# set -xv" line by removing the hash (#) and share your logcat from boot.

#!/sbin/sh
#
# AMARULLZ DATA TO SD-EXT MOD FOR ANDROID ( AD2SDX )
# ==================================================
#
# by amarullz [at] yahoo [dot] com
# xda-developers : amarullz
# (c) 2011
# * Oct 19 (ALPHA01)
#
# Info: ~ For Changing Log
##

###
# Initializing
###

# Verbose shell output for debugging purposes
# set -xv

echo "[AD2SDX] Begin!"

#-- SDCard Speed Fix
if [ -e /sys/devices/virtual/bdi/179:0/read_ahead_kb ]
then
/system/xbin/echo "8192" > /sys/devices/virtual/bdi/179:0/read_ahead_kb;
fi;

#-- Create sd-ext folder if it doesn't exist (e.g. CM10)
if [ ! -d /sd-ext ]
then
mount -o rw,remount -t rootfs rootfs /
mkdir /sd-ext
mount -o ro,remount -t rootfs rootfs /
fi;

#-- Unmount /sd-ext if it already mounted
umount /sd-ext;

#-- Mount /data and move it to /sd-ext
mount /data;
mount --move /data /sd-ext;

#-- Mount sd-ext to /data ( You Will Get 1GB/2GB Internal Memory :D )
mount -t ext4 -o noauto_da_alloc,data=ordered,commit=15,barrier=1,nouser_xattr,errors=continue,noatime,nodiratime,nosuid,nodev /dev/block/mmcblk0p2 /data;
chown 1000:1000 /data;
chmod 771 /data;

###[ SDEXT mmcblk0p2 STRICT ]###
# app, app_s, lib_s, app-private, data : should in /data (mmcblk0p2)
#
# ~ ALPHA02 - Add framework_s into (mmcblk0p2) strict
###
for i in framework_s app app_s lib_s app-private data;
do
#-- If Symlink in /data, delete it
if [ -h /data/$i ]
then
rm /data/$i;
fi;

#-- If Directory Exists in /sd-ext, move it to /data
if [ -d /sd-ext/$i ]
then
mv /sd-ext/$i /data/;
fi;

#-- If Directory Not Extst in /data, create it
if [ ! -d /data/$i ]
then
mkdir /data/$i;
#-- Just Open All Permissions ;)
chmod 0777 /data/$i;
fi;

#-- Now Create Symlink From /sd-ext to /data
if [ ! -h /sd-ext/$i ]
then
ln -s /data/$i /sd-ext/$i;
fi;
done;

###[ INTERNAL mtdblock5 STRICT ]###
# For performance, dalvik-cache should be on /sd-ext
###
for i in dalvik-cache;
do
#-- If Symlink in /data, delete it
if [ -h /sd-ext/$i ]
then
rm /sd-ext/$i;
fi;

#-- If Directory Exists in /sd-ext, move it to /data
if [ -d /data/$i ]
then
mv /data/$i /sd-ext/;
fi;

#-- If Directory Not Extst in /data, create it
if [ ! -d /sd-ext/$i ]
then
mkdir /sd-ext/$i;
#-- Just Open All Permissions ;)
chmod 0777 /sd-ext/$i;
fi;

#-- Now Create Symlink From /sd-ext to /data
if [ ! -h /data/$i ]
then
ln -s /sd-ext/$i /data/$i;
fi;
done;

###
# Now create symlink of the rest non Symlink Directories and Files on /sd-ext to /data
#
# ~ ALPHA02 - Fix ls to ls -a, it's ok, because we test -h for symlink
###
cd /sd-ext;
for i in `ls -a`;
do
if [ $i != ".." -a $i != "." ]
then
if [ ! -h /sd-ext/$i ]
then
if [ ! -h /data/$i ]
then
ln -s /sd-ext/$i /data/$i;
fi;
fi;
fi;
done;
cd /;

###
# It should also need to create the rest non Symlink Directories and Files on /data to /sd-ext
# ~ ALPHA02 - Some Directory may be missing if we don't use it
###
cd /data;
for i in `ls -a`;
do
if [ $i != ".." -a $i != "." ]
then
if [ ! -h /data/$i ]
then
if [ ! -h /sd-ext/$i ]
then
ln -s /data/$i /sd-ext/$i;
fi;
fi;
fi;
done;
cd /;

###
# Now Important Thing, is to move the com.htc* and com.android* data to /sd-ext (internal)
# For Good performance. So the system applications will run smooth.
#
# System application will read/write in Internal memory, and 3rd apps will run on sdcard
#
# Notice: Will be affected in 2nd boot :D, so Reboot the system after 1st boot...
###

#-- Prepare data_s in /sd-ext ( For system data )
if [ ! -d /sd-ext/data_s ]
then
mkdir /sd-ext/data_s;
#-- Just Open All Permissions ;)
chmod 0777 /sd-ext/data_s;
fi;

#-- Now Move All com.htc* and com.android* to Internal Memory
cd /data/data/;
for i in `ls -d com.htc* com.android*`;
do
#-- Only Non Symlink
if [ ! -h /data/data/$i ]
then
mv /data/data/$i /sd-ext/data_s/;
fi;
done;

#-- Create Symlink of /data/data_s/* to /data/data/ (mmcblk0p2)
cd /sd-ext/data_s/
for i in `ls -d *`;
do
#-- Only If Symlink Not Exists
if [ ! -h /data/data/$i ]
then
ln -s /sd-ext/data_s/$i /data/data/$i
fi;
done;

#-- Of Finished.... :D

echo "[AD2SDX] Finished!"