What steps will reproduce the problem?
1. Create a fake block device (dev = fs.CreateFile('name', stat.S_IFBLK))
2. Try and read from it (dev.read())
What is the expected output? What do you see instead?
This should work, but an error is raised about trying to read from a directory.
Patch with fix and test attached.