There are many reasons for the issue. I solved my problem, which is equivalent but maybe not the same with:
Edit the cmdline.txt and make sure you have: fsck.mode=force fsck.repair=yes
This from: Raspberry Pi 3 and Raspbian Jessie - How to run fsck at boot?
(you need a full setup with monitor and keyboard on the pi)
If it works, fine. In my case I did something before.
One ref is here: https://www.raspberrypi.org/forums/viewtopic.php?t=155233
Add this at the end of the line in cmdline.txt
Then reboot. You will get into a shell that allows you some editing.
You need to start with:
mount -o remount,rw /dev/mmcblk0p2 /
mount /dev/mmcblk0p1 /boot
Then you can inspect the /etc/fstab
Hardcode /dev/mmcblkopX for example in fstab, if this is the issue and also hardcode it in the
root=XXX in the cmdline.txt file.
In this shell you will not be able to run systemctl commands, but you can inspect some
logs in /var/logs/.
I hope this helps.