Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 84363182 authored by Al Viro's avatar Al Viro
Browse files

->aio_read and ->aio_write removed



no remaining users

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 1c65d986
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -429,8 +429,6 @@ prototypes:
	loff_t (*llseek) (struct file *, loff_t, int);
	ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
	ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);
	ssize_t (*aio_read) (struct kiocb *, const struct iovec *, unsigned long, loff_t);
	ssize_t (*aio_write) (struct kiocb *, const struct iovec *, unsigned long, loff_t);
	ssize_t (*read_iter) (struct kiocb *, struct iov_iter *);
	ssize_t (*write_iter) (struct kiocb *, struct iov_iter *);
	int (*iterate) (struct file *, struct dir_context *);
+3 −0
Original line number Diff line number Diff line
@@ -480,3 +480,6 @@ in your dentry operations instead.
[mandatory]
	do _not_ use new_sync_{read,write} for ->read/->write; leave it NULL
	instead.
--
[mandatory]
	->aio_read/->aio_write are gone.  Use ->read_iter/->write_iter.
+0 −6
Original line number Diff line number Diff line
@@ -804,8 +804,6 @@ struct file_operations {
	loff_t (*llseek) (struct file *, loff_t, int);
	ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
	ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);
	ssize_t (*aio_read) (struct kiocb *, const struct iovec *, unsigned long, loff_t);
	ssize_t (*aio_write) (struct kiocb *, const struct iovec *, unsigned long, loff_t);
	ssize_t (*read_iter) (struct kiocb *, struct iov_iter *);
	ssize_t (*write_iter) (struct kiocb *, struct iov_iter *);
	int (*iterate) (struct file *, struct dir_context *);
@@ -838,14 +836,10 @@ otherwise noted.

  read: called by read(2) and related system calls

  aio_read: vectored, possibly asynchronous read

  read_iter: possibly asynchronous read with iov_iter as destination

  write: called by write(2) and related system calls

  aio_write: vectored, possibly asynchronous write

  write_iter: possibly asynchronous write with iov_iter as source

  iterate: called when the VFS needs to read the directory contents
+2 −11
Original line number Diff line number Diff line
@@ -1347,8 +1347,6 @@ SYSCALL_DEFINE1(io_destroy, aio_context_t, ctx)
	return -EINVAL;
}

typedef ssize_t (aio_rw_op)(struct kiocb *, const struct iovec *,
			    unsigned long, loff_t);
typedef ssize_t (rw_iter_op)(struct kiocb *, struct iov_iter *);

static int aio_setup_vectored_rw(int rw, char __user *buf, size_t len,
@@ -1377,7 +1375,6 @@ static ssize_t aio_run_iocb(struct kiocb *req, unsigned opcode,
	ssize_t ret;
	int rw;
	fmode_t mode;
	aio_rw_op *rw_op;
	rw_iter_op *iter_op;
	struct iovec inline_vecs[UIO_FASTIOV], *iovec = inline_vecs;
	struct iov_iter iter;
@@ -1387,7 +1384,6 @@ static ssize_t aio_run_iocb(struct kiocb *req, unsigned opcode,
	case IOCB_CMD_PREADV:
		mode	= FMODE_READ;
		rw	= READ;
		rw_op	= file->f_op->aio_read;
		iter_op	= file->f_op->read_iter;
		goto rw_common;

@@ -1395,14 +1391,13 @@ static ssize_t aio_run_iocb(struct kiocb *req, unsigned opcode,
	case IOCB_CMD_PWRITEV:
		mode	= FMODE_WRITE;
		rw	= WRITE;
		rw_op	= file->f_op->aio_write;
		iter_op	= file->f_op->write_iter;
		goto rw_common;
rw_common:
		if (unlikely(!(file->f_mode & mode)))
			return -EBADF;

		if (!rw_op && !iter_op)
		if (!iter_op)
			return -EINVAL;

		if (opcode == IOCB_CMD_PREADV || opcode == IOCB_CMD_PWRITEV)
@@ -1425,11 +1420,7 @@ static ssize_t aio_run_iocb(struct kiocb *req, unsigned opcode,
		if (rw == WRITE)
			file_start_write(file);

		if (iter_op) {
		ret = iter_op(req, &iter);
		} else {
			ret = rw_op(req, iter.iov, iter.nr_segs, req->ki_pos);
		}

		if (rw == WRITE)
			file_end_write(file);
+2 −2
Original line number Diff line number Diff line
@@ -168,10 +168,10 @@ struct file *alloc_file(struct path *path, fmode_t mode,
	file->f_inode = path->dentry->d_inode;
	file->f_mapping = path->dentry->d_inode->i_mapping;
	if ((mode & FMODE_READ) &&
	     likely(fop->read || fop->aio_read || fop->read_iter))
	     likely(fop->read || fop->read_iter))
		mode |= FMODE_CAN_READ;
	if ((mode & FMODE_WRITE) &&
	     likely(fop->write || fop->aio_write || fop->write_iter))
	     likely(fop->write || fop->write_iter))
		mode |= FMODE_CAN_WRITE;
	file->f_mode = mode;
	file->f_op = fop;
Loading