So I performed a full update of the system and then on reboot get thrown into emergency mode because the system is unable to mount /var along with several of my other data partitions. However once in emergency mode all partitions have been mounted fine. A curious one indeed, however after a bit of Googling I found the answer: https://stackoverflow.com/questions/23371594/systemd-udev-dependency-failure-when-auto-mounting-separate-partition-during-sta
It turned out that with a certain kernal parameter set it was trying to mount the partitions before it was ready to so it failed, this is a super simple over simplification
Was able to work around this, although it is a sort of a hack. Would still love to know why this is occurring in the first place, but it appears as though udev isn’t mounting mmcblk partitions until after systemd init is complete, which causes dependency errors if /etc/fstab calls for an mmcblk partition. udev checks the fstab, waits for an mmcblk device to be mounted and times out, THEN attempts to mount the device.
OK So as mentioned on that SO post is to change the kernel parameter, unfortunately I am running an already custom kernel to fix IOMMU PCI bindings for VGA pass through and the last thing I want to do is break that. Luckily the OP on that question posted a workaround that I ended up using. I am documenting it here so I can find it again easily:
1) Create systemd service to handle mounting the partition:
#/etc/systemd/system/mount-data-partition.service
[Unit]
Description=Mount Data Partition
DefaultDependencies=no
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/mount /dev/mmcblk0p4
2) Add a Wants dependency to this service within systemd-udev-trigger.service:
#/usr/lib/systemd/system/systemd-udev-trigger.service
[Unit]
Description=udev Coldplug all Devices
Documentation=man:udev(7) man:systemd-udevd.service(8)
DefaultDependencies=no
Wants=systemd-udevd.service mount-data-partition.service
After=systemd-udevd-kernel.socket systemd-udevd-control.socket
Before=sysinit.target
ConditionCapability=CAP_MKNOD
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/udevadm trigger --type=subsystems --action=add ; /usr/bin/udevadm trigger
This causes mount-data-partition.service to be called by and executed before systemd-udev-trigger.service. The mount command will then look for /dev/mmcblk0p4 in /etc/fstab, and mount as specified (in my situation, /var). Since /dev/mmcblk0p4 is now mounted, udev recognizes that the device exists and no longer times out while waiting for it. System continues to boot as normal.
Thanks to SO user schumacher574 for this, saved my bacon. Also for anyone who actually reads this I upvoted his answer on SO.