fuse: return -EIOCBQUEUED from fuse_direct_IO() for all async requests
authorBrian Foster <bfoster@redhat.com>
Thu, 30 May 2013 19:35:50 +0000 (15:35 -0400)
committerMiklos Szeredi <mszeredi@suse.cz>
Mon, 3 Jun 2013 13:15:42 +0000 (15:15 +0200)
commitc9ecf989cc7626e9edf8abef79f64b909542129b
tree4d86f444e40c8dfd0157e7b7062290735b1578de
parent28420dad233520811c0e0860e7fb4975ed863fc4
fuse: return -EIOCBQUEUED from fuse_direct_IO() for all async requests

If request submission fails for an async request (i.e.,
get_user_pages() returns -ERESTARTSYS), we currently skip the
-EIOCBQUEUED return and drop into wait_for_sync_kiocb() forever.

Avoid this by always returning -EIOCBQUEUED for async requests. If
an error occurs, the error is passed into fuse_aio_complete(),
returned via aio_complete() and thus propagated to userspace via
io_getevents().

Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Maxim Patlasov <MPatlasov@parallels.com>
Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
fs/fuse/file.c