I have created the following file structure on my Linux box, as a test case:
If I start DOSBox with ~/dbtest as my C:, DIR claims that C:\FOO\BAR does not contain any files. If I start DOSbox with ~/dbtest/FOO as my C:, DIR will find BAZ.TXT in C:\BAR without problem.
The bug - I'm assuming it's a bug, at least - seems to have been introduced on Wed Mar 4 21:08:22 2009 UTC ("use fast filesearch routines for directory cache"), which changed some code in drive_cache.cpp. But I don't know if that's where the problem is, or if it's in cross.cpp. Or somewhere else entirely.