Difference between using Raw block device with O_DIRECT and Raw Character Device
I am running a Sybase Database (version 15.0.3 64-bit) on RHEL 5.3 using LVM Raw Block devices. Basically, Sybase would open the devices using O_DIRECT. I also tried mapping the same Block devices to raw devices (/dev/raw/rawN) and did a database load test to compare the IO speed between Block device with O_DIRECT and raw devices. Noticed that the raw character device database load was faster than the block device with DirectIO. Even though, I used the same set of devices, not sure why there is a difference in IO speed. Will the Linux kernel use different drivers for Block Devices opened with O_DIRECT and Raw character devices? Any suggestions would be greatly appreciated.