Skip to content

Commit 8436318

Browse files
author
Al Viro
committed
->aio_read and ->aio_write removed
no remaining users Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
1 parent 1c65d98 commit 8436318

File tree

8 files changed

+9
-54
lines changed

8 files changed

+9
-54
lines changed

Diff for: Documentation/filesystems/Locking

-2
Original file line numberDiff line numberDiff line change
@@ -429,8 +429,6 @@ prototypes:
429429
loff_t (*llseek) (struct file *, loff_t, int);
430430
ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
431431
ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);
432-
ssize_t (*aio_read) (struct kiocb *, const struct iovec *, unsigned long, loff_t);
433-
ssize_t (*aio_write) (struct kiocb *, const struct iovec *, unsigned long, loff_t);
434432
ssize_t (*read_iter) (struct kiocb *, struct iov_iter *);
435433
ssize_t (*write_iter) (struct kiocb *, struct iov_iter *);
436434
int (*iterate) (struct file *, struct dir_context *);

Diff for: Documentation/filesystems/porting

+3
Original file line numberDiff line numberDiff line change
@@ -480,3 +480,6 @@ in your dentry operations instead.
480480
[mandatory]
481481
do _not_ use new_sync_{read,write} for ->read/->write; leave it NULL
482482
instead.
483+
--
484+
[mandatory]
485+
->aio_read/->aio_write are gone. Use ->read_iter/->write_iter.

Diff for: Documentation/filesystems/vfs.txt

-6
Original file line numberDiff line numberDiff line change
@@ -804,8 +804,6 @@ struct file_operations {
804804
loff_t (*llseek) (struct file *, loff_t, int);
805805
ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
806806
ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);
807-
ssize_t (*aio_read) (struct kiocb *, const struct iovec *, unsigned long, loff_t);
808-
ssize_t (*aio_write) (struct kiocb *, const struct iovec *, unsigned long, loff_t);
809807
ssize_t (*read_iter) (struct kiocb *, struct iov_iter *);
810808
ssize_t (*write_iter) (struct kiocb *, struct iov_iter *);
811809
int (*iterate) (struct file *, struct dir_context *);
@@ -838,14 +836,10 @@ otherwise noted.
838836

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

841-
aio_read: vectored, possibly asynchronous read
842-
843839
read_iter: possibly asynchronous read with iov_iter as destination
844840

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

847-
aio_write: vectored, possibly asynchronous write
848-
849843
write_iter: possibly asynchronous write with iov_iter as source
850844

851845
iterate: called when the VFS needs to read the directory contents

Diff for: fs/aio.c

+2-11
Original file line numberDiff line numberDiff line change
@@ -1347,8 +1347,6 @@ SYSCALL_DEFINE1(io_destroy, aio_context_t, ctx)
13471347
return -EINVAL;
13481348
}
13491349

1350-
typedef ssize_t (aio_rw_op)(struct kiocb *, const struct iovec *,
1351-
unsigned long, loff_t);
13521350
typedef ssize_t (rw_iter_op)(struct kiocb *, struct iov_iter *);
13531351

13541352
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,
13771375
ssize_t ret;
13781376
int rw;
13791377
fmode_t mode;
1380-
aio_rw_op *rw_op;
13811378
rw_iter_op *iter_op;
13821379
struct iovec inline_vecs[UIO_FASTIOV], *iovec = inline_vecs;
13831380
struct iov_iter iter;
@@ -1387,22 +1384,20 @@ static ssize_t aio_run_iocb(struct kiocb *req, unsigned opcode,
13871384
case IOCB_CMD_PREADV:
13881385
mode = FMODE_READ;
13891386
rw = READ;
1390-
rw_op = file->f_op->aio_read;
13911387
iter_op = file->f_op->read_iter;
13921388
goto rw_common;
13931389

13941390
case IOCB_CMD_PWRITE:
13951391
case IOCB_CMD_PWRITEV:
13961392
mode = FMODE_WRITE;
13971393
rw = WRITE;
1398-
rw_op = file->f_op->aio_write;
13991394
iter_op = file->f_op->write_iter;
14001395
goto rw_common;
14011396
rw_common:
14021397
if (unlikely(!(file->f_mode & mode)))
14031398
return -EBADF;
14041399

1405-
if (!rw_op && !iter_op)
1400+
if (!iter_op)
14061401
return -EINVAL;
14071402

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

1428-
if (iter_op) {
1429-
ret = iter_op(req, &iter);
1430-
} else {
1431-
ret = rw_op(req, iter.iov, iter.nr_segs, req->ki_pos);
1432-
}
1423+
ret = iter_op(req, &iter);
14331424

14341425
if (rw == WRITE)
14351426
file_end_write(file);

Diff for: fs/file_table.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -168,10 +168,10 @@ struct file *alloc_file(struct path *path, fmode_t mode,
168168
file->f_inode = path->dentry->d_inode;
169169
file->f_mapping = path->dentry->d_inode->i_mapping;
170170
if ((mode & FMODE_READ) &&
171-
likely(fop->read || fop->aio_read || fop->read_iter))
171+
likely(fop->read || fop->read_iter))
172172
mode |= FMODE_CAN_READ;
173173
if ((mode & FMODE_WRITE) &&
174-
likely(fop->write || fop->aio_write || fop->write_iter))
174+
likely(fop->write || fop->write_iter))
175175
mode |= FMODE_CAN_WRITE;
176176
file->f_mode = mode;
177177
file->f_op = fop;

Diff for: fs/open.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -734,10 +734,10 @@ static int do_dentry_open(struct file *f,
734734
if ((f->f_mode & (FMODE_READ | FMODE_WRITE)) == FMODE_READ)
735735
i_readcount_inc(inode);
736736
if ((f->f_mode & FMODE_READ) &&
737-
likely(f->f_op->read || f->f_op->aio_read || f->f_op->read_iter))
737+
likely(f->f_op->read || f->f_op->read_iter))
738738
f->f_mode |= FMODE_CAN_READ;
739739
if ((f->f_mode & FMODE_WRITE) &&
740-
likely(f->f_op->write || f->f_op->aio_write || f->f_op->write_iter))
740+
likely(f->f_op->write || f->f_op->write_iter))
741741
f->f_mode |= FMODE_CAN_WRITE;
742742

743743
f->f_flags &= ~(O_CREAT | O_EXCL | O_NOCTTY | O_TRUNC);

Diff for: fs/read_write.c

-29
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@
2222
#include <asm/unistd.h>
2323

2424
typedef ssize_t (*io_fn_t)(struct file *, char __user *, size_t, loff_t *);
25-
typedef ssize_t (*iov_fn_t)(struct kiocb *, const struct iovec *,
26-
unsigned long, loff_t);
2725
typedef ssize_t (*iter_fn_t)(struct kiocb *, struct iov_iter *);
2826

2927
const struct file_operations generic_ro_fops = {
@@ -668,21 +666,6 @@ static ssize_t do_iter_readv_writev(struct file *filp, struct iov_iter *iter,
668666
return ret;
669667
}
670668

671-
static ssize_t do_sync_readv_writev(struct file *filp, struct iov_iter *iter,
672-
loff_t *ppos, iov_fn_t fn)
673-
{
674-
struct kiocb kiocb;
675-
ssize_t ret;
676-
677-
init_sync_kiocb(&kiocb, filp);
678-
kiocb.ki_pos = *ppos;
679-
680-
ret = fn(&kiocb, iter->iov, iter->nr_segs, kiocb.ki_pos);
681-
BUG_ON(ret == -EIOCBQUEUED);
682-
*ppos = kiocb.ki_pos;
683-
return ret;
684-
}
685-
686669
/* Do it by hand, with file-ops */
687670
static ssize_t do_loop_readv_writev(struct file *filp, struct iov_iter *iter,
688671
loff_t *ppos, io_fn_t fn)
@@ -797,7 +780,6 @@ static ssize_t do_readv_writev(int type, struct file *file,
797780
struct iov_iter iter;
798781
ssize_t ret;
799782
io_fn_t fn;
800-
iov_fn_t fnv;
801783
iter_fn_t iter_fn;
802784

803785
ret = import_iovec(type, uvector, nr_segs,
@@ -812,22 +794,17 @@ static ssize_t do_readv_writev(int type, struct file *file,
812794
if (ret < 0)
813795
goto out;
814796

815-
fnv = NULL;
816797
if (type == READ) {
817798
fn = file->f_op->read;
818-
fnv = file->f_op->aio_read;
819799
iter_fn = file->f_op->read_iter;
820800
} else {
821801
fn = (io_fn_t)file->f_op->write;
822-
fnv = file->f_op->aio_write;
823802
iter_fn = file->f_op->write_iter;
824803
file_start_write(file);
825804
}
826805

827806
if (iter_fn)
828807
ret = do_iter_readv_writev(file, &iter, pos, iter_fn);
829-
else if (fnv)
830-
ret = do_sync_readv_writev(file, &iter, pos, fnv);
831808
else
832809
ret = do_loop_readv_writev(file, &iter, pos, fn);
833810

@@ -977,7 +954,6 @@ static ssize_t compat_do_readv_writev(int type, struct file *file,
977954
struct iov_iter iter;
978955
ssize_t ret;
979956
io_fn_t fn;
980-
iov_fn_t fnv;
981957
iter_fn_t iter_fn;
982958

983959
ret = compat_import_iovec(type, uvector, nr_segs,
@@ -992,22 +968,17 @@ static ssize_t compat_do_readv_writev(int type, struct file *file,
992968
if (ret < 0)
993969
goto out;
994970

995-
fnv = NULL;
996971
if (type == READ) {
997972
fn = file->f_op->read;
998-
fnv = file->f_op->aio_read;
999973
iter_fn = file->f_op->read_iter;
1000974
} else {
1001975
fn = (io_fn_t)file->f_op->write;
1002-
fnv = file->f_op->aio_write;
1003976
iter_fn = file->f_op->write_iter;
1004977
file_start_write(file);
1005978
}
1006979

1007980
if (iter_fn)
1008981
ret = do_iter_readv_writev(file, &iter, pos, iter_fn);
1009-
else if (fnv)
1010-
ret = do_sync_readv_writev(file, &iter, pos, fnv);
1011982
else
1012983
ret = do_loop_readv_writev(file, &iter, pos, fn);
1013984

Diff for: include/linux/fs.h

-2
Original file line numberDiff line numberDiff line change
@@ -1562,8 +1562,6 @@ struct file_operations {
15621562
loff_t (*llseek) (struct file *, loff_t, int);
15631563
ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
15641564
ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);
1565-
ssize_t (*aio_read) (struct kiocb *, const struct iovec *, unsigned long, loff_t);
1566-
ssize_t (*aio_write) (struct kiocb *, const struct iovec *, unsigned long, loff_t);
15671565
ssize_t (*read_iter) (struct kiocb *, struct iov_iter *);
15681566
ssize_t (*write_iter) (struct kiocb *, struct iov_iter *);
15691567
int (*iterate) (struct file *, struct dir_context *);

0 commit comments

Comments
 (0)