diff options
author | Maxim Patlasov <mpatlasov@parallels.com> | 2012-12-14 19:21:08 +0400 |
---|---|---|
committer | Miklos Szeredi <mszeredi@suse.cz> | 2013-04-17 21:50:59 +0200 |
commit | bcba24ccdc82f7415154cf87226c2577cea13a5c (patch) | |
tree | 10e9c4e70f82cab86bd3790cd7ccb6adccf5aff0 /block | |
parent | 36cf66ed9f871fc0d0911921fba5873df3ddb2dc (diff) |
fuse: enable asynchronous processing direct IO
In case of synchronous DIO request (i.e. read(2) or write(2) for a file
opened with O_DIRECT), the patch submits fuse requests asynchronously, but
waits for their completions before return from fuse_direct_IO().
In case of asynchronous DIO request (i.e. libaio io_submit() or a file opened
with O_DIRECT), the patch submits fuse requests asynchronously and return
-EIOCBQUEUED immediately.
The only special case is async DIO extending file. Here the patch falls back
to old behaviour because we can't return -EIOCBQUEUED and update i_size later,
without i_mutex hold. And we have no method to wait on real async I/O
requests.
The patch also clean __fuse_direct_write() up: it's better to update i_size
in its callers. Thanks Brian for suggestion.
Signed-off-by: Maxim Patlasov <mpatlasov@parallels.com>
Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
Diffstat (limited to 'block')
0 files changed, 0 insertions, 0 deletions