Lines Matching refs:io_data
645 struct ffs_io_data *io_data = container_of(work, struct ffs_io_data, in ffs_user_copy_worker() local
647 int ret = io_data->req->status ? io_data->req->status : in ffs_user_copy_worker()
648 io_data->req->actual; in ffs_user_copy_worker()
649 bool kiocb_has_eventfd = io_data->kiocb->ki_flags & IOCB_EVENTFD; in ffs_user_copy_worker()
651 if (io_data->read && ret > 0) { in ffs_user_copy_worker()
652 use_mm(io_data->mm); in ffs_user_copy_worker()
653 ret = copy_to_iter(io_data->buf, ret, &io_data->data); in ffs_user_copy_worker()
654 if (iov_iter_count(&io_data->data)) in ffs_user_copy_worker()
656 unuse_mm(io_data->mm); in ffs_user_copy_worker()
659 io_data->kiocb->ki_complete(io_data->kiocb, ret, ret); in ffs_user_copy_worker()
661 if (io_data->ffs->ffs_eventfd && !kiocb_has_eventfd) in ffs_user_copy_worker()
662 eventfd_signal(io_data->ffs->ffs_eventfd, 1); in ffs_user_copy_worker()
664 usb_ep_free_request(io_data->ep, io_data->req); in ffs_user_copy_worker()
666 if (io_data->read) in ffs_user_copy_worker()
667 kfree(io_data->to_free); in ffs_user_copy_worker()
668 kfree(io_data->buf); in ffs_user_copy_worker()
669 kfree(io_data); in ffs_user_copy_worker()
675 struct ffs_io_data *io_data = req->context; in ffs_epfile_async_io_complete() local
679 INIT_WORK(&io_data->work, ffs_user_copy_worker); in ffs_epfile_async_io_complete()
680 schedule_work(&io_data->work); in ffs_epfile_async_io_complete()
683 static ssize_t ffs_epfile_io(struct file *file, struct ffs_io_data *io_data) in ffs_epfile_io() argument
713 halt = (!io_data->read == !epfile->in); in ffs_epfile_io()
734 data_len = iov_iter_count(&io_data->data); in ffs_epfile_io()
739 if (io_data->read) in ffs_epfile_io()
746 if (!io_data->read) { in ffs_epfile_io()
747 copied = copy_from_iter(data, data_len, &io_data->data); in ffs_epfile_io()
793 if (io_data->aio) { in ffs_epfile_io()
801 io_data->buf = data; in ffs_epfile_io()
802 io_data->ep = ep->ep; in ffs_epfile_io()
803 io_data->req = req; in ffs_epfile_io()
804 io_data->ffs = epfile->ffs; in ffs_epfile_io()
806 req->context = io_data; in ffs_epfile_io()
846 if (io_data->read && ret > 0) { in ffs_epfile_io()
847 ret = copy_to_iter(data, ret, &io_data->data); in ffs_epfile_io()
885 struct ffs_io_data *io_data = kiocb->private; in ffs_aio_cancel() local
893 if (likely(io_data && io_data->ep && io_data->req)) in ffs_aio_cancel()
894 value = usb_ep_dequeue(io_data->ep, io_data->req); in ffs_aio_cancel()
905 struct ffs_io_data io_data, *p = &io_data; in ffs_epfile_write_iter() local
911 p = kmalloc(sizeof(io_data), GFP_KERNEL); in ffs_epfile_write_iter()
941 struct ffs_io_data io_data, *p = &io_data; in ffs_epfile_read_iter() local
947 p = kmalloc(sizeof(io_data), GFP_KERNEL); in ffs_epfile_read_iter()