Currently if you use the raw driver against /dev/hda1 while it has an
fs mounted, everything gets confused and the kernel locks up or oopses.
Al said to use bd_claim(). This prevents the raw driver from being
able to open the device under these circumstances.
There is value in being able to read the raw device while there's a
filesystem mounted: to poke around at the disk without interacting with
the kernel's caching. You can still do that, with an O_DIRECT open of
/dev/hda1.