If a disk is of an oddball size (200mb + 512b, in the case of rootgen.sh), when disk_open() is called on a GELI encrypted partition, attempts to read the partition table fail, as they pass through the decryption process which turns the already plaintext data into jibberish.
When reading the partition table, always pass a slice and partition setting of -1, and an offset of 0.