Pull io_uring updates from Jens Axboe: "Here are the io_uring changes for this merge window. Light on new features this time around (just splice + buffer selection), lots of cleanups, fixes, and improvements to existing support. In particular, this contains: - Cleanup fixed file update handling for stack fallback (Hillf) - Re-work of how pollable async IO is handled, we no longer require thread offload to handle that. Instead we rely using poll to drive this, with task_work execution. - In conjunction with the above, allow expendable buffer selection, so that poll+recv (for example) no longer has to be a split operation. - Make sure we honor RLIMIT_FSIZE for buffered writes - Add support for splice (Pavel) - Linked work inheritance fixes and optimizations (Pavel) - Async work fixes and cleanups (Pavel) - Improve io-wq locking (Pavel) - Hashed link write improvements (Pavel) - SETUP_IOPOLL|SETUP_SQPOLL improvements (Xiaoguang)" * tag 'for-5.7/io_uring-2020-03-29' of git://git.kernel.dk/linux-block: (54 commits) io_uring: cleanup io_alloc_async_ctx() io_uring: fix missing 'return' in comment io-wq: handle hashed writes in chains io-uring: drop 'free_pfile' in struct io_file_put io-uring: drop completion when removing file io_uring: Fix ->data corruption on re-enqueue io-wq: close cancel gap for hashed linked work io_uring: make spdxcheck.py happy io_uring: honor original task RLIMIT_FSIZE io-wq: hash dependent work io-wq: split hashing and enqueueing io-wq: don't resched if there is no work io-wq: remove duplicated cancel code io_uring: fix truncated async read/readv and write/writev retry io_uring: dual license io_uring.h uapi header io_uring: io_uring_enter(2) don't poll while SETUP_IOPOLL|SETUP_SQPOLL enabled io_uring: Fix unused function warnings io_uring: add end-of-bits marker and build time verify it io_uring: provide means of removing buffers io_uring: add IOSQE_BUFFER_SELECT support for IORING_OP_RECVMSG ...
Showing the changes to include/linux (2 of 12 files). Show all
Unified · Split
| @@ -391,6 +391,10 @@ extern int recvmsg_copy_msghdr(struct msghdr *msg, · 390 unmodified lines | |||
| 391 | struct user_msghdr __user *umsg, unsigned flags, | 391 | struct user_msghdr __user *umsg, unsigned flags, |
| 392 | struct sockaddr __user **uaddr, | 392 | struct sockaddr __user **uaddr, |
| 393 | struct iovec **iov); | 393 | struct iovec **iov); |
| 394 | extern int __copy_msghdr_from_user(struct msghdr *kmsg, | ||
| 395 | struct user_msghdr __user *umsg, | ||
| 396 | struct sockaddr __user **save_addr, | ||
| 397 | struct iovec __user **uiov, size_t *nsegs); | ||
| 394 | 398 | ||
| 395 | /* helpers which do the actual work for syscalls */ | 399 | /* helpers which do the actual work for syscalls */ |
| 396 | extern int __sys_recvfrom(int fd, void __user *ubuf, size_t size, | 400 | extern int __sys_recvfrom(int fd, void __user *ubuf, size_t size, |
| @@ -78,6 +78,9 @@ extern ssize_t add_to_pipe(struct pipe_inode_info *, · 77 unmodified lines | |||
| 78 | struct pipe_buffer *); | 78 | struct pipe_buffer *); |
| 79 | extern ssize_t splice_direct_to_actor(struct file *, struct splice_desc *, | 79 | extern ssize_t splice_direct_to_actor(struct file *, struct splice_desc *, |
| 80 | splice_direct_actor *); | 80 | splice_direct_actor *); |
| 81 | extern long do_splice(struct file *in, loff_t __user *off_in, | ||
| 82 | struct file *out, loff_t __user *off_out, | ||
| 83 | size_t len, unsigned int flags); | ||
| 81 | 84 | ||
| 82 | /* | 85 | /* |
| 83 | * for dynamic pipe sizing | 86 | * for dynamic pipe sizing |