A ver si esto le sirve a alguien:
El S3 se quedaba atascado en la pantalla de inicio con el logo de Samsung.
Al entrar en el recovery nos daba el error "E: failed to mount /efs (Invalid argument)"

El directorio EFS contiene toda la información 'personalizada' que diferencia un teléfono de otro. Es decir, el IMEI, bloqueo de operadora, etc. Por eso si somos aficionados a flashear ROMs es muy importante tener una copia de seguridad del EFS, preferiblemente guardada en el PC. En caso de que se perdiera ese directorio y no tuviéramos una copia, sólo podríamos restaurar dicha carpeta a partir de la backup de otro teléfono, en cuyo caso estaríamos copiando su IMEI en nuestro teléfono lo cual es ilegal, y ningún usuario nos 'prestará' su backup así que insistimos: haced una copia de seguridad de la carpeta EFS (hay muchas apps gratuitas que lo hacen) y guardadlas a buen recaudo (preferiblemente en el PC).
La solución consiste en formatear la partición de EFS y restaurar la propia EFS a partir de un backup que (menos mal) Txirloro había hecho antes. Sin dicho backup no habríamos podido hacer nada (legal) y tendríamos que haber mandado el teléfono al SAT.
Voy a intentar explicar todo lo que he hecho, por si le ayuda a alguien en el futuro.
Primero flasheamos con PC ODIN una STOCK ROM (por ejemplo I9300XXDLJ4_I9300PHEDLI1_PHE). Creo que daba igual que fuera con 1 o 4 archivos, ya que el problema lo teníamos con la partición EFS y creo que las stock ROM no tocan nada ahí. Como es una STOCK ROM no tenemos ni root, ni nada, con el PC ODIN le flasheamos el CF-Root de Chainfire (CF-Auto-Root-m0-m0xx-gti9300)
Arrancamos el teléfono en modo recovery (Volumen UP + Power + Home), lo conectamos al PC, y nos conectamos con ADB SHELL.
Nuestra primera sorpresa:
Siguiendo las indicaciones de XDA, intentamos particionar el EFS:
#mke2fs / dev/block/mmcblk0p3
sh: mke2fs: not found
Resulta que mke2fs es un comando que está incluído en busybox, que no es más que un conjunto de herramientas/comandos más avanzados que los que trae el propio sistema operativo (linux) por defecto en el teléfono.
Me descargué la versión precompilada de busybox de busybox.net
PC>
adb shell mkdir /data/busybox
PC>
adb push busybox /data/busybox
PC>
adb shell
$
su
#
cd /data/busybox
#
chmod 775 busybox
#
./busybox --install
una vez instalado busybox ya podíamos invocar el comando mke2fs para formatear la partición del EFS:
#
busybox mke2fs /dev/block/mmcblk0p3
busybox mke2fs /dev/block/mmcblk0p3
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
5136 inodes, 20480 blocks
1024 blocks (5%) reserved for the super user
First data block=1
Maximum filesystem blocks=262144
3 block groups
8192 blocks per group, 8192 fragments per group
1712 inodes per group
Superblock backups stored on blocks:
8193
Y luego montamos la partición en el directorio /efs
#
busybox mount -w -t ext4 /dev/block/mmcblk0p3 /efs
busybox mount -w -t ext4 /dev/block/mmcblk0p3 /efs
Con la carpeta EFS ya arreglada, sólo nos faltaba hacer ADB PUSH para copiar la copia de seguridad (en nuestro caso efs.tar) al teléfono, descomprimirla (busybox tar xfv efs.tar) y mover su contenido a la recién arreglada carpeta /efs
Reiniciar y listo
Si no encontráis o no os apetece buscar los ficheros necesarios dejo un zip con el Odin 3.07, el precompilado de Buxybox y el CF-Root de Chainfire para el S3 aquí.