> Doesn't that mean user space right to block device? Simply based on
> that, I can see you fail all these times... because you do it from
> kernel space..and that's against the very basic meaning of direct I/O
You can visualize direct I/O for two purpose:
1. Zero copy directly from user buffers to block device as you pointed out.
2. Don't make an extra effort to cache the data in page-cache, as it might have already be done by applications.
In some cases, you may not afford to solve 1., e.g. you may want to manipulate data before writing it do target. Although this can be done on the same user space buffer, but you may not want to do that because it may change the working data set of application.
Rajat