This is really one of the most maddening things that OS X does:
The disk "Foo" is in use and could not be ejected.
Try quitting applications and try again.
"Hey, you’re the damn computer — try telling me what those applications are! Try telling me what files are in use! Try letting me override!"
In Linux you would now use the fuser command to find out which process still uses it, and fuser -k would even kill it right away in one step, but OS X doesnt have that so you can use:
lsof -D /path/to/cdrom
instead, and then kill the process manually.