diff options
| author | Jens Axboe <jens.axboe@oracle.com> | 2007-06-01 05:49:19 -0400 |
|---|---|---|
| committer | Jens Axboe <jens.axboe@oracle.com> | 2007-07-10 02:04:13 -0400 |
| commit | 5ffc4ef45b3b0a57872f631b4e4ceb8ace0d7496 (patch) | |
| tree | 437ec32a58ac5e4794565b2bbb3da6611f0d6a04 | |
| parent | 534f2aaa6ab07cd71164180bc958a7dcde41db11 (diff) | |
sendfile: remove .sendfile from filesystems that use generic_file_sendfile()
They can use generic_file_splice_read() instead. Since sys_sendfile() now
prefers that, there should be no change in behaviour.
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
37 files changed, 43 insertions, 131 deletions
diff --git a/fs/adfs/file.c b/fs/adfs/file.c index f544a2855923..36e381c6a99a 100644 --- a/fs/adfs/file.c +++ b/fs/adfs/file.c | |||
| @@ -33,7 +33,7 @@ const struct file_operations adfs_file_operations = { | |||
| 33 | .fsync = file_fsync, | 33 | .fsync = file_fsync, |
| 34 | .write = do_sync_write, | 34 | .write = do_sync_write, |
| 35 | .aio_write = generic_file_aio_write, | 35 | .aio_write = generic_file_aio_write, |
| 36 | .sendfile = generic_file_sendfile, | 36 | .splice_read = generic_file_splice_read, |
| 37 | }; | 37 | }; |
| 38 | 38 | ||
| 39 | const struct inode_operations adfs_file_inode_operations = { | 39 | const struct inode_operations adfs_file_inode_operations = { |
diff --git a/fs/affs/file.c b/fs/affs/file.c index c8796906f584..c314a35f0918 100644 --- a/fs/affs/file.c +++ b/fs/affs/file.c | |||
| @@ -35,7 +35,7 @@ const struct file_operations affs_file_operations = { | |||
| 35 | .open = affs_file_open, | 35 | .open = affs_file_open, |
| 36 | .release = affs_file_release, | 36 | .release = affs_file_release, |
| 37 | .fsync = file_fsync, | 37 | .fsync = file_fsync, |
| 38 | .sendfile = generic_file_sendfile, | 38 | .splice_read = generic_file_splice_read, |
| 39 | }; | 39 | }; |
| 40 | 40 | ||
| 41 | const struct inode_operations affs_file_inode_operations = { | 41 | const struct inode_operations affs_file_inode_operations = { |
diff --git a/fs/afs/file.c b/fs/afs/file.c index 9c0e721d9fc2..aede7eb66dd4 100644 --- a/fs/afs/file.c +++ b/fs/afs/file.c | |||
| @@ -32,7 +32,7 @@ const struct file_operations afs_file_operations = { | |||
| 32 | .aio_read = generic_file_aio_read, | 32 | .aio_read = generic_file_aio_read, |
| 33 | .aio_write = afs_file_write, | 33 | .aio_write = afs_file_write, |
| 34 | .mmap = generic_file_readonly_mmap, | 34 | .mmap = generic_file_readonly_mmap, |
| 35 | .sendfile = generic_file_sendfile, | 35 | .splice_read = generic_file_splice_read, |
| 36 | .fsync = afs_fsync, | 36 | .fsync = afs_fsync, |
| 37 | }; | 37 | }; |
| 38 | 38 | ||
diff --git a/fs/bfs/file.c b/fs/bfs/file.c index ef4d1fa04e65..24310e9ee05a 100644 --- a/fs/bfs/file.c +++ b/fs/bfs/file.c | |||
| @@ -24,7 +24,7 @@ const struct file_operations bfs_file_operations = { | |||
| 24 | .write = do_sync_write, | 24 | .write = do_sync_write, |
| 25 | .aio_write = generic_file_aio_write, | 25 | .aio_write = generic_file_aio_write, |
| 26 | .mmap = generic_file_mmap, | 26 | .mmap = generic_file_mmap, |
| 27 | .sendfile = generic_file_sendfile, | 27 | .splice_read = generic_file_splice_read, |
| 28 | }; | 28 | }; |
| 29 | 29 | ||
| 30 | static int bfs_move_block(unsigned long from, unsigned long to, struct super_block *sb) | 30 | static int bfs_move_block(unsigned long from, unsigned long to, struct super_block *sb) |
diff --git a/fs/block_dev.c b/fs/block_dev.c index ea1480a16f51..b3e9bfa748cf 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c | |||
| @@ -1346,7 +1346,6 @@ const struct file_operations def_blk_fops = { | |||
| 1346 | #ifdef CONFIG_COMPAT | 1346 | #ifdef CONFIG_COMPAT |
| 1347 | .compat_ioctl = compat_blkdev_ioctl, | 1347 | .compat_ioctl = compat_blkdev_ioctl, |
| 1348 | #endif | 1348 | #endif |
| 1349 | .sendfile = generic_file_sendfile, | ||
| 1350 | .splice_read = generic_file_splice_read, | 1349 | .splice_read = generic_file_splice_read, |
| 1351 | .splice_write = generic_file_splice_write, | 1350 | .splice_write = generic_file_splice_write, |
| 1352 | }; | 1351 | }; |
diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c index 7c04752b76cb..8b0cbf4a4ad0 100644 --- a/fs/cifs/cifsfs.c +++ b/fs/cifs/cifsfs.c | |||
| @@ -616,7 +616,7 @@ const struct file_operations cifs_file_ops = { | |||
| 616 | .fsync = cifs_fsync, | 616 | .fsync = cifs_fsync, |
| 617 | .flush = cifs_flush, | 617 | .flush = cifs_flush, |
| 618 | .mmap = cifs_file_mmap, | 618 | .mmap = cifs_file_mmap, |
| 619 | .sendfile = generic_file_sendfile, | 619 | .splice_read = generic_file_splice_read, |
| 620 | .llseek = cifs_llseek, | 620 | .llseek = cifs_llseek, |
| 621 | #ifdef CONFIG_CIFS_POSIX | 621 | #ifdef CONFIG_CIFS_POSIX |
| 622 | .ioctl = cifs_ioctl, | 622 | .ioctl = cifs_ioctl, |
| @@ -637,7 +637,7 @@ const struct file_operations cifs_file_direct_ops = { | |||
| 637 | .lock = cifs_lock, | 637 | .lock = cifs_lock, |
| 638 | .fsync = cifs_fsync, | 638 | .fsync = cifs_fsync, |
| 639 | .flush = cifs_flush, | 639 | .flush = cifs_flush, |
| 640 | .sendfile = generic_file_sendfile, /* BB removeme BB */ | 640 | .splice_read = generic_file_splice_read, |
| 641 | #ifdef CONFIG_CIFS_POSIX | 641 | #ifdef CONFIG_CIFS_POSIX |
| 642 | .ioctl = cifs_ioctl, | 642 | .ioctl = cifs_ioctl, |
| 643 | #endif /* CONFIG_CIFS_POSIX */ | 643 | #endif /* CONFIG_CIFS_POSIX */ |
| @@ -656,7 +656,7 @@ const struct file_operations cifs_file_nobrl_ops = { | |||
| 656 | .fsync = cifs_fsync, | 656 | .fsync = cifs_fsync, |
| 657 | .flush = cifs_flush, | 657 | .flush = cifs_flush, |
| 658 | .mmap = cifs_file_mmap, | 658 | .mmap = cifs_file_mmap, |
| 659 | .sendfile = generic_file_sendfile, | 659 | .splice_read = generic_file_splice_read, |
| 660 | .llseek = cifs_llseek, | 660 | .llseek = cifs_llseek, |
| 661 | #ifdef CONFIG_CIFS_POSIX | 661 | #ifdef CONFIG_CIFS_POSIX |
| 662 | .ioctl = cifs_ioctl, | 662 | .ioctl = cifs_ioctl, |
| @@ -676,7 +676,7 @@ const struct file_operations cifs_file_direct_nobrl_ops = { | |||
| 676 | .release = cifs_close, | 676 | .release = cifs_close, |
| 677 | .fsync = cifs_fsync, | 677 | .fsync = cifs_fsync, |
| 678 | .flush = cifs_flush, | 678 | .flush = cifs_flush, |
| 679 | .sendfile = generic_file_sendfile, /* BB removeme BB */ | 679 | .splice_read = generic_file_splice_read, |
| 680 | #ifdef CONFIG_CIFS_POSIX | 680 | #ifdef CONFIG_CIFS_POSIX |
| 681 | .ioctl = cifs_ioctl, | 681 | .ioctl = cifs_ioctl, |
| 682 | #endif /* CONFIG_CIFS_POSIX */ | 682 | #endif /* CONFIG_CIFS_POSIX */ |
diff --git a/fs/coda/file.c b/fs/coda/file.c index 5ef2b609ec7d..99dbe866816d 100644 --- a/fs/coda/file.c +++ b/fs/coda/file.c | |||
| @@ -47,8 +47,9 @@ coda_file_read(struct file *coda_file, char __user *buf, size_t count, loff_t *p | |||
| 47 | } | 47 | } |
| 48 | 48 | ||
| 49 | static ssize_t | 49 | static ssize_t |
| 50 | coda_file_sendfile(struct file *coda_file, loff_t *ppos, size_t count, | 50 | coda_file_splice_read(struct file *coda_file, loff_t *ppos, |
| 51 | read_actor_t actor, void *target) | 51 | struct pipe_inode_info *pipe, size_t count, |
| 52 | unsigned int flags) | ||
| 52 | { | 53 | { |
| 53 | struct coda_file_info *cfi; | 54 | struct coda_file_info *cfi; |
| 54 | struct file *host_file; | 55 | struct file *host_file; |
| @@ -57,10 +58,10 @@ coda_file_sendfile(struct file *coda_file, loff_t *ppos, size_t count, | |||
| 57 | BUG_ON(!cfi || cfi->cfi_magic != CODA_MAGIC); | 58 | BUG_ON(!cfi || cfi->cfi_magic != CODA_MAGIC); |
| 58 | host_file = cfi->cfi_container; | 59 | host_file = cfi->cfi_container; |
| 59 | 60 | ||
| 60 | if (!host_file->f_op || !host_file->f_op->sendfile) | 61 | if (!host_file->f_op || !host_file->f_op->splice_read) |
| 61 | return -EINVAL; | 62 | return -EINVAL; |
| 62 | 63 | ||
| 63 | return host_file->f_op->sendfile(host_file, ppos, count, actor, target); | 64 | return host_file->f_op->splice_read(host_file, ppos, pipe, count,flags); |
| 64 | } | 65 | } |
| 65 | 66 | ||
| 66 | static ssize_t | 67 | static ssize_t |
| @@ -295,6 +296,6 @@ const struct file_operations coda_file_operations = { | |||
| 295 | .flush = coda_flush, | 296 | .flush = coda_flush, |
| 296 | .release = coda_release, | 297 | .release = coda_release, |
| 297 | .fsync = coda_fsync, | 298 | .fsync = coda_fsync, |
| 298 | .sendfile = coda_file_sendfile, | 299 | .splice_read = coda_file_splice_read, |
| 299 | }; | 300 | }; |
| 300 | 301 | ||
diff --git a/fs/ecryptfs/file.c b/fs/ecryptfs/file.c index 59288d817078..94f456fe4d9b 100644 --- a/fs/ecryptfs/file.c +++ b/fs/ecryptfs/file.c | |||
| @@ -338,16 +338,17 @@ static int ecryptfs_fasync(int fd, struct file *file, int flag) | |||
| 338 | return rc; | 338 | return rc; |
| 339 | } | 339 | } |
| 340 | 340 | ||
| 341 | static ssize_t ecryptfs_sendfile(struct file *file, loff_t * ppos, | 341 | static ssize_t ecryptfs_splice_read(struct file *file, loff_t * ppos, |
| 342 | size_t count, read_actor_t actor, void *target) | 342 | struct pipe_inode_info *pipe, size_t count, |
| 343 | unsigned int flags) | ||
| 343 | { | 344 | { |
| 344 | struct file *lower_file = NULL; | 345 | struct file *lower_file = NULL; |
| 345 | int rc = -EINVAL; | 346 | int rc = -EINVAL; |
| 346 | 347 | ||
| 347 | lower_file = ecryptfs_file_to_lower(file); | 348 | lower_file = ecryptfs_file_to_lower(file); |
| 348 | if (lower_file->f_op && lower_file->f_op->sendfile) | 349 | if (lower_file->f_op && lower_file->f_op->splice_read) |
| 349 | rc = lower_file->f_op->sendfile(lower_file, ppos, count, | 350 | rc = lower_file->f_op->splice_read(lower_file, ppos, pipe, |
| 350 | actor, target); | 351 | count, flags); |
| 351 | 352 | ||
| 352 | return rc; | 353 | return rc; |
| 353 | } | 354 | } |
| @@ -364,7 +365,7 @@ const struct file_operations ecryptfs_dir_fops = { | |||
| 364 | .release = ecryptfs_release, | 365 | .release = ecryptfs_release, |
| 365 | .fsync = ecryptfs_fsync, | 366 | .fsync = ecryptfs_fsync, |
| 366 | .fasync = ecryptfs_fasync, | 367 | .fasync = ecryptfs_fasync, |
| 367 | .sendfile = ecryptfs_sendfile, | 368 | .splice_read = ecryptfs_splice_read, |
| 368 | }; | 369 | }; |
| 369 | 370 | ||
| 370 | const struct file_operations ecryptfs_main_fops = { | 371 | const struct file_operations ecryptfs_main_fops = { |
| @@ -381,7 +382,7 @@ const struct file_operations ecryptfs_main_fops = { | |||
| 381 | .release = ecryptfs_release, | 382 | .release = ecryptfs_release, |
| 382 | .fsync = ecryptfs_fsync, | 383 | .fsync = ecryptfs_fsync, |
| 383 | .fasync = ecryptfs_fasync, | 384 | .fasync = ecryptfs_fasync, |
| 384 | .sendfile = ecryptfs_sendfile, | 385 | .splice_read = ecryptfs_splice_read, |
| 385 | }; | 386 | }; |
| 386 | 387 | ||
| 387 | static int | 388 | static int |
diff --git a/fs/ext2/file.c b/fs/ext2/file.c index 566d4e2d3852..072a1909b2bc 100644 --- a/fs/ext2/file.c +++ b/fs/ext2/file.c | |||
| @@ -53,7 +53,6 @@ const struct file_operations ext2_file_operations = { | |||
| 53 | .open = generic_file_open, | 53 | .open = generic_file_open, |
| 54 | .release = ext2_release_file, | 54 | .release = ext2_release_file, |
| 55 | .fsync = ext2_sync_file, | 55 | .fsync = ext2_sync_file, |
| 56 | .sendfile = generic_file_sendfile, | ||
| 57 | .splice_read = generic_file_splice_read, | 56 | .splice_read = generic_file_splice_read, |
| 58 | .splice_write = generic_file_splice_write, | 57 | .splice_write = generic_file_splice_write, |
| 59 | }; | 58 | }; |
diff --git a/fs/ext3/file.c b/fs/ext3/file.c index 1e6f13864536..acc4913d3019 100644 --- a/fs/ext3/file.c +++ b/fs/ext3/file.c | |||
| @@ -120,7 +120,6 @@ const struct file_operations ext3_file_operations = { | |||
| 120 | .open = generic_file_open, | 120 | .open = generic_file_open, |
| 121 | .release = ext3_release_file, | 121 | .release = ext3_release_file, |
| 122 | .fsync = ext3_sync_file, | 122 | .fsync = ext3_sync_file, |
| 123 | .sendfile = generic_file_sendfile, | ||
| 124 | .splice_read = generic_file_splice_read, | 123 | .splice_read = generic_file_splice_read, |
| 125 | .splice_write = generic_file_splice_write, | 124 | .splice_write = generic_file_splice_write, |
| 126 | }; | 125 | }; |
diff --git a/fs/ext4/file.c b/fs/ext4/file.c index 3c6c1fd2be90..d4c8186aed64 100644 --- a/fs/ext4/file.c +++ b/fs/ext4/file.c | |||
| @@ -120,7 +120,6 @@ const struct file_operations ext4_file_operations = { | |||
| 120 | .open = generic_file_open, | 120 | .open = generic_file_open, |
| 121 | .release = ext4_release_file, | 121 | .release = ext4_release_file, |
| 122 | .fsync = ext4_sync_file, | 122 | .fsync = ext4_sync_file, |
| 123 | .sendfile = generic_file_sendfile, | ||
| 124 | .splice_read = generic_file_splice_read, | 123 | .splice_read = generic_file_splice_read, |
| 125 | .splice_write = generic_file_splice_write, | 124 | .splice_write = generic_file_splice_write, |
| 126 | }; | 125 | }; |
diff --git a/fs/fat/file.c b/fs/fat/file.c index 55d3c7461c5b..69a83b59dce8 100644 --- a/fs/fat/file.c +++ b/fs/fat/file.c | |||
| @@ -134,7 +134,7 @@ const struct file_operations fat_file_operations = { | |||
| 134 | .release = fat_file_release, | 134 | .release = fat_file_release, |
| 135 | .ioctl = fat_generic_ioctl, | 135 | .ioctl = fat_generic_ioctl, |
| 136 | .fsync = file_fsync, | 136 | .fsync = file_fsync, |
| 137 | .sendfile = generic_file_sendfile, | 137 | .splice_read = generic_file_splice_read, |
| 138 | }; | 138 | }; |
| 139 | 139 | ||
| 140 | static int fat_cont_expand(struct inode *inode, loff_t size) | 140 | static int fat_cont_expand(struct inode *inode, loff_t size) |
diff --git a/fs/fuse/file.c b/fs/fuse/file.c index adf7995232b8..f79de7c8cdfa 100644 --- a/fs/fuse/file.c +++ b/fs/fuse/file.c | |||
| @@ -802,7 +802,7 @@ static const struct file_operations fuse_file_operations = { | |||
| 802 | .release = fuse_release, | 802 | .release = fuse_release, |
| 803 | .fsync = fuse_fsync, | 803 | .fsync = fuse_fsync, |
| 804 | .lock = fuse_file_lock, | 804 | .lock = fuse_file_lock, |
| 805 | .sendfile = generic_file_sendfile, | 805 | .splice_read = generic_file_splice_read, |
| 806 | }; | 806 | }; |
| 807 | 807 | ||
| 808 | static const struct file_operations fuse_direct_io_file_operations = { | 808 | static const struct file_operations fuse_direct_io_file_operations = { |
| @@ -814,7 +814,7 @@ static const struct file_operations fuse_direct_io_file_operations = { | |||
| 814 | .release = fuse_release, | 814 | .release = fuse_release, |
| 815 | .fsync = fuse_fsync, | 815 | .fsync = fuse_fsync, |
| 816 | .lock = fuse_file_lock, | 816 | .lock = fuse_file_lock, |
| 817 | /* no mmap and sendfile */ | 817 | /* no mmap and splice_read */ |
| 818 | }; | 818 | }; |
| 819 | 819 | ||
| 820 | static const struct address_space_operations fuse_file_aops = { | 820 | static const struct address_space_operations fuse_file_aops = { |
diff --git a/fs/gfs2/ops_file.c b/fs/gfs2/ops_file.c index 064df8804582..7dc3be108204 100644 --- a/fs/gfs2/ops_file.c +++ b/fs/gfs2/ops_file.c | |||
| @@ -635,7 +635,6 @@ const struct file_operations gfs2_file_fops = { | |||
| 635 | .release = gfs2_close, | 635 | .release = gfs2_close, |
| 636 | .fsync = gfs2_fsync, | 636 | .fsync = gfs2_fsync, |
| 637 | .lock = gfs2_lock, | 637 | .lock = gfs2_lock, |
| 638 | .sendfile = generic_file_sendfile, | ||
| 639 | .flock = gfs2_flock, | 638 | .flock = gfs2_flock, |
| 640 | .splice_read = generic_file_splice_read, | 639 | .splice_read = generic_file_splice_read, |
| 641 | .splice_write = generic_file_splice_write, | 640 | .splice_write = generic_file_splice_write, |
diff --git a/fs/hfs/inode.c b/fs/hfs/inode.c index 9a934db0bd8a..bc835f272a6e 100644 --- a/fs/hfs/inode.c +++ b/fs/hfs/inode.c | |||
| @@ -607,7 +607,7 @@ static const struct file_operations hfs_file_operations = { | |||
| 607 | .write = do_sync_write, | 607 | .write = do_sync_write, |
| 608 | .aio_write = generic_file_aio_write, | 608 | .aio_write = generic_file_aio_write, |
| 609 | .mmap = generic_file_mmap, | 609 | .mmap = generic_file_mmap, |
| 610 | .sendfile = generic_file_sendfile, | 610 | .splice_read = generic_file_splice_read, |
| 611 | .fsync = file_fsync, | 611 | .fsync = file_fsync, |
| 612 | .open = hfs_file_open, | 612 | .open = hfs_file_open, |
| 613 | .release = hfs_file_release, | 613 | .release = hfs_file_release, |
diff --git a/fs/hfsplus/inode.c b/fs/hfsplus/inode.c index 45dab5d6cc10..409ce5429c91 100644 --- a/fs/hfsplus/inode.c +++ b/fs/hfsplus/inode.c | |||
| @@ -288,7 +288,7 @@ static const struct file_operations hfsplus_file_operations = { | |||
| 288 | .write = do_sync_write, | 288 | .write = do_sync_write, |
| 289 | .aio_write = generic_file_aio_write, | 289 | .aio_write = generic_file_aio_write, |
| 290 | .mmap = generic_file_mmap, | 290 | .mmap = generic_file_mmap, |
| 291 | .sendfile = generic_file_sendfile, | 291 | .splice_read = generic_file_splice_read, |
| 292 | .fsync = file_fsync, | 292 | .fsync = file_fsync, |
| 293 | .open = hfsplus_file_open, | 293 | .open = hfsplus_file_open, |
| 294 | .release = hfsplus_file_release, | 294 | .release = hfsplus_file_release, |
diff --git a/fs/hostfs/hostfs_kern.c b/fs/hostfs/hostfs_kern.c index 8286491dbf31..c77862032e84 100644 --- a/fs/hostfs/hostfs_kern.c +++ b/fs/hostfs/hostfs_kern.c | |||
| @@ -390,7 +390,7 @@ int hostfs_fsync(struct file *file, struct dentry *dentry, int datasync) | |||
| 390 | static const struct file_operations hostfs_file_fops = { | 390 | static const struct file_operations hostfs_file_fops = { |
| 391 | .llseek = generic_file_llseek, | 391 | .llseek = generic_file_llseek, |
| 392 | .read = do_sync_read, | 392 | .read = do_sync_read, |
| 393 | .sendfile = generic_file_sendfile, | 393 | .splice_read = generic_file_splice_read, |
| 394 | .aio_read = generic_file_aio_read, | 394 | .aio_read = generic_file_aio_read, |
| 395 | .aio_write = generic_file_aio_write, | 395 | .aio_write = generic_file_aio_write, |
| 396 | .write = do_sync_write, | 396 | .write = do_sync_write, |
diff --git a/fs/hpfs/file.c b/fs/hpfs/file.c index b4eafc0f1e54..5b53e5c5d8df 100644 --- a/fs/hpfs/file.c +++ b/fs/hpfs/file.c | |||
| @@ -129,7 +129,7 @@ const struct file_operations hpfs_file_ops = | |||
| 129 | .mmap = generic_file_mmap, | 129 | .mmap = generic_file_mmap, |
| 130 | .release = hpfs_file_release, | 130 | .release = hpfs_file_release, |
| 131 | .fsync = hpfs_file_fsync, | 131 | .fsync = hpfs_file_fsync, |
| 132 | .sendfile = generic_file_sendfile, | 132 | .splice_read = generic_file_splice_read, |
| 133 | }; | 133 | }; |
| 134 | 134 | ||
| 135 | const struct inode_operations hpfs_file_iops = | 135 | const struct inode_operations hpfs_file_iops = |
diff --git a/fs/jffs2/file.c b/fs/jffs2/file.c index 99871279a1ed..c2530197be0c 100644 --- a/fs/jffs2/file.c +++ b/fs/jffs2/file.c | |||
| @@ -47,7 +47,7 @@ const struct file_operations jffs2_file_operations = | |||
| 47 | .ioctl = jffs2_ioctl, | 47 | .ioctl = jffs2_ioctl, |
| 48 | .mmap = generic_file_readonly_mmap, | 48 | .mmap = generic_file_readonly_mmap, |
| 49 | .fsync = jffs2_fsync, | 49 | .fsync = jffs2_fsync, |
| 50 | .sendfile = generic_file_sendfile | 50 | .splice_read = generic_file_splice_read, |
| 51 | }; | 51 | }; |
| 52 | 52 | ||
| 53 | /* jffs2_file_inode_operations */ | 53 | /* jffs2_file_inode_operations */ |
diff --git a/fs/jfs/file.c b/fs/jfs/file.c index f7f8eff19b7b..87eb93694af7 100644 --- a/fs/jfs/file.c +++ b/fs/jfs/file.c | |||
| @@ -108,7 +108,6 @@ const struct file_operations jfs_file_operations = { | |||
| 108 | .aio_read = generic_file_aio_read, | 108 | .aio_read = generic_file_aio_read, |
| 109 | .aio_write = generic_file_aio_write, | 109 | .aio_write = generic_file_aio_write, |
| 110 | .mmap = generic_file_mmap, | 110 | .mmap = generic_file_mmap, |
| 111 | .sendfile = generic_file_sendfile, | ||
| 112 | .splice_read = generic_file_splice_read, | 111 | .splice_read = generic_file_splice_read, |
| 113 | .splice_write = generic_file_splice_write, | 112 | .splice_write = generic_file_splice_write, |
| 114 | .fsync = jfs_fsync, | 113 | .fsync = jfs_fsync, |
diff --git a/fs/minix/file.c b/fs/minix/file.c index f92baa1d7570..17765f697e50 100644 --- a/fs/minix/file.c +++ b/fs/minix/file.c | |||
| @@ -23,7 +23,7 @@ const struct file_operations minix_file_operations = { | |||
| 23 | .aio_write = generic_file_aio_write, | 23 | .aio_write = generic_file_aio_write, |
| 24 | .mmap = generic_file_mmap, | 24 | .mmap = generic_file_mmap, |
| 25 | .fsync = minix_sync_file, | 25 | .fsync = minix_sync_file, |
| 26 | .sendfile = generic_file_sendfile, | 26 | .splice_read = generic_file_splice_read, |
| 27 | }; | 27 | }; |
| 28 | 28 | ||
| 29 | const struct inode_operations minix_file_inode_operations = { | 29 | const struct inode_operations minix_file_inode_operations = { |
diff --git a/fs/ntfs/file.c b/fs/ntfs/file.c index 7ed56390b582..ffcc504a1667 100644 --- a/fs/ntfs/file.c +++ b/fs/ntfs/file.c | |||
| @@ -2276,7 +2276,7 @@ const struct file_operations ntfs_file_ops = { | |||
| 2276 | mounted filesystem. */ | 2276 | mounted filesystem. */ |
| 2277 | .mmap = generic_file_mmap, /* Mmap file. */ | 2277 | .mmap = generic_file_mmap, /* Mmap file. */ |
| 2278 | .open = ntfs_file_open, /* Open file. */ | 2278 | .open = ntfs_file_open, /* Open file. */ |
| 2279 | .sendfile = generic_file_sendfile, /* Zero-copy data send with | 2279 | .splice_read = generic_file_splice_read /* Zero-copy data send with |
| 2280 | the data source being on | 2280 | the data source being on |
| 2281 | the ntfs partition. We do | 2281 | the ntfs partition. We do |
| 2282 | not need to care about the | 2282 | not need to care about the |
diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c index 222f108ee454..ed1ffa70cc38 100644 --- a/fs/ocfs2/file.c +++ b/fs/ocfs2/file.c | |||
| @@ -1822,7 +1822,6 @@ const struct inode_operations ocfs2_special_file_iops = { | |||
| 1822 | const struct file_operations ocfs2_fops = { | 1822 | const struct file_operations ocfs2_fops = { |
| 1823 | .read = do_sync_read, | 1823 | .read = do_sync_read, |
| 1824 | .write = do_sync_write, | 1824 | .write = do_sync_write, |
| 1825 | .sendfile = generic_file_sendfile, | ||
| 1826 | .mmap = ocfs2_mmap, | 1825 | .mmap = ocfs2_mmap, |
| 1827 | .fsync = ocfs2_sync_file, | 1826 | .fsync = ocfs2_sync_file, |
| 1828 | .release = ocfs2_file_release, | 1827 | .release = ocfs2_file_release, |
diff --git a/fs/qnx4/file.c b/fs/qnx4/file.c index 44649981bbc8..867f42b02035 100644 --- a/fs/qnx4/file.c +++ b/fs/qnx4/file.c | |||
| @@ -25,7 +25,7 @@ const struct file_operations qnx4_file_operations = | |||
| 25 | .read = do_sync_read, | 25 | .read = do_sync_read, |
| 26 | .aio_read = generic_file_aio_read, | 26 | .aio_read = generic_file_aio_read, |
| 27 | .mmap = generic_file_mmap, | 27 | .mmap = generic_file_mmap, |
| 28 | .sendfile = generic_file_sendfile, | 28 | .splice_read = generic_file_splice_read, |
| 29 | #ifdef CONFIG_QNX4FS_RW | 29 | #ifdef CONFIG_QNX4FS_RW |
| 30 | .write = do_sync_write, | 30 | .write = do_sync_write, |
| 31 | .aio_write = generic_file_aio_write, | 31 | .aio_write = generic_file_aio_write, |
diff --git a/fs/ramfs/file-mmu.c b/fs/ramfs/file-mmu.c index 2f14774a124f..97bdc0b2f9d2 100644 --- a/fs/ramfs/file-mmu.c +++ b/fs/ramfs/file-mmu.c | |||
| @@ -41,7 +41,7 @@ const struct file_operations ramfs_file_operations = { | |||
| 41 | .aio_write = generic_file_aio_write, | 41 | .aio_write = generic_file_aio_write, |
| 42 | .mmap = generic_file_mmap, | 42 | .mmap = generic_file_mmap, |
| 43 | .fsync = simple_sync_file, | 43 | .fsync = simple_sync_file, |
| 44 | .sendfile = generic_file_sendfile, | 44 | .splice_read = generic_file_splice_read, |
| 45 | .llseek = generic_file_llseek, | 45 | .llseek = generic_file_llseek, |
| 46 | }; | 46 | }; |
| 47 | 47 | ||
diff --git a/fs/ramfs/file-nommu.c b/fs/ramfs/file-nommu.c index 5d258c40a2fd..cad2b7ace630 100644 --- a/fs/ramfs/file-nommu.c +++ b/fs/ramfs/file-nommu.c | |||
| @@ -42,7 +42,7 @@ const struct file_operations ramfs_file_operations = { | |||
| 42 | .write = do_sync_write, | 42 | .write = do_sync_write, |
| 43 | .aio_write = generic_file_aio_write, | 43 | .aio_write = generic_file_aio_write, |
| 44 | .fsync = simple_sync_file, | 44 | .fsync = simple_sync_file, |
| 45 | .sendfile = generic_file_sendfile, | 45 | .splice_read = generic_file_splice_read, |
| 46 | .llseek = generic_file_llseek, | 46 | .llseek = generic_file_llseek, |
| 47 | }; | 47 | }; |
| 48 | 48 | ||
diff --git a/fs/reiserfs/file.c b/fs/reiserfs/file.c index 9e451a68580f..30eebfb1b2d8 100644 --- a/fs/reiserfs/file.c +++ b/fs/reiserfs/file.c | |||
| @@ -1531,7 +1531,6 @@ const struct file_operations reiserfs_file_operations = { | |||
| 1531 | .open = generic_file_open, | 1531 | .open = generic_file_open, |
| 1532 | .release = reiserfs_file_release, | 1532 | .release = reiserfs_file_release, |
| 1533 | .fsync = reiserfs_sync_file, | 1533 | .fsync = reiserfs_sync_file, |
| 1534 | .sendfile = generic_file_sendfile, | ||
| 1535 | .aio_read = generic_file_aio_read, | 1534 | .aio_read = generic_file_aio_read, |
| 1536 | .aio_write = generic_file_aio_write, | 1535 | .aio_write = generic_file_aio_write, |
| 1537 | .splice_read = generic_file_splice_read, | 1536 | .splice_read = generic_file_splice_read, |
diff --git a/fs/smbfs/file.c b/fs/smbfs/file.c index aea3f8aa54c0..c5d78a7e492b 100644 --- a/fs/smbfs/file.c +++ b/fs/smbfs/file.c | |||
| @@ -262,8 +262,9 @@ out: | |||
| 262 | } | 262 | } |
| 263 | 263 | ||
| 264 | static ssize_t | 264 | static ssize_t |
| 265 | smb_file_sendfile(struct file *file, loff_t *ppos, | 265 | smb_file_splice_read(struct file *file, loff_t *ppos, |
| 266 | size_t count, read_actor_t actor, void *target) | 266 | struct pipe_inode_info *pipe, size_t count, |
| 267 | unsigned int flags) | ||
| 267 | { | 268 | { |
| 268 | struct dentry *dentry = file->f_path.dentry; | 269 | struct dentry *dentry = file->f_path.dentry; |
| 269 | ssize_t status; | 270 | ssize_t status; |
| @@ -277,7 +278,7 @@ smb_file_sendfile(struct file *file, loff_t *ppos, | |||
| 277 | DENTRY_PATH(dentry), status); | 278 | DENTRY_PATH(dentry), status); |
| 278 | goto out; | 279 | goto out; |
| 279 | } | 280 | } |
| 280 | status = generic_file_sendfile(file, ppos, count, actor, target); | 281 | status = generic_file_splice_read(file, ppos, pipe, count, flags); |
| 281 | out: | 282 | out: |
| 282 | return status; | 283 | return status; |
| 283 | } | 284 | } |
| @@ -416,7 +417,7 @@ const struct file_operations smb_file_operations = | |||
| 416 | .open = smb_file_open, | 417 | .open = smb_file_open, |
| 417 | .release = smb_file_release, | 418 | .release = smb_file_release, |
| 418 | .fsync = smb_fsync, | 419 | .fsync = smb_fsync, |
| 419 | .sendfile = smb_file_sendfile, | 420 | .splice_read = smb_file_splice_read, |
| 420 | }; | 421 | }; |
| 421 | 422 | ||
| 422 | const struct inode_operations smb_file_inode_operations = | 423 | const struct inode_operations smb_file_inode_operations = |
diff --git a/fs/sysv/file.c b/fs/sysv/file.c index 0732ddb9020b..589be21d884e 100644 --- a/fs/sysv/file.c +++ b/fs/sysv/file.c | |||
| @@ -27,7 +27,7 @@ const struct file_operations sysv_file_operations = { | |||
| 27 | .aio_write = generic_file_aio_write, | 27 | .aio_write = generic_file_aio_write, |
| 28 | .mmap = generic_file_mmap, | 28 | .mmap = generic_file_mmap, |
| 29 | .fsync = sysv_sync_file, | 29 | .fsync = sysv_sync_file, |
| 30 | .sendfile = generic_file_sendfile, | 30 | .splice_read = generic_file_splice_read, |
| 31 | }; | 31 | }; |
| 32 | 32 | ||
| 33 | const struct inode_operations sysv_file_inode_operations = { | 33 | const struct inode_operations sysv_file_inode_operations = { |
diff --git a/fs/udf/file.c b/fs/udf/file.c index 51b5764685e7..df070bee8d4f 100644 --- a/fs/udf/file.c +++ b/fs/udf/file.c | |||
| @@ -261,7 +261,7 @@ const struct file_operations udf_file_operations = { | |||
| 261 | .aio_write = udf_file_aio_write, | 261 | .aio_write = udf_file_aio_write, |
| 262 | .release = udf_release_file, | 262 | .release = udf_release_file, |
| 263 | .fsync = udf_fsync_file, | 263 | .fsync = udf_fsync_file, |
| 264 | .sendfile = generic_file_sendfile, | 264 | .splice_read = generic_file_splice_read, |
| 265 | }; | 265 | }; |
| 266 | 266 | ||
| 267 | const struct inode_operations udf_file_inode_operations = { | 267 | const struct inode_operations udf_file_inode_operations = { |
diff --git a/fs/ufs/file.c b/fs/ufs/file.c index 1e096323bad4..6705d74c6d2d 100644 --- a/fs/ufs/file.c +++ b/fs/ufs/file.c | |||
| @@ -60,5 +60,5 @@ const struct file_operations ufs_file_operations = { | |||
| 60 | .mmap = generic_file_mmap, | 60 | .mmap = generic_file_mmap, |
| 61 | .open = generic_file_open, | 61 | .open = generic_file_open, |
| 62 | .fsync = ufs_sync_file, | 62 | .fsync = ufs_sync_file, |
| 63 | .sendfile = generic_file_sendfile, | 63 | .splice_read = generic_file_splice_read, |
| 64 | }; | 64 | }; |
diff --git a/fs/xfs/linux-2.6/xfs_file.c b/fs/xfs/linux-2.6/xfs_file.c index cb51dc961355..8c43cd2e237a 100644 --- a/fs/xfs/linux-2.6/xfs_file.c +++ b/fs/xfs/linux-2.6/xfs_file.c | |||
| @@ -124,30 +124,6 @@ xfs_file_aio_write_invis( | |||
| 124 | } | 124 | } |
| 125 | 125 | ||
| 126 | STATIC ssize_t | 126 | STATIC ssize_t |
| 127 | xfs_file_sendfile( | ||
| 128 | struct file *filp, | ||
| 129 | loff_t *pos, | ||
| 130 | size_t count, | ||
| 131 | read_actor_t actor, | ||
| 132 | void *target) | ||
| 133 | { | ||
| 134 | return bhv_vop_sendfile(vn_from_inode(filp->f_path.dentry->d_inode), | ||
| 135 | filp, pos, 0, count, actor, target, NULL); | ||
| 136 | } | ||
| 137 | |||
| 138 | STATIC ssize_t | ||
| 139 | xfs_file_sendfile_invis( | ||
| 140 | struct file *filp, | ||
| 141 | loff_t *pos, | ||
| 142 | size_t count, | ||
| 143 | read_actor_t actor, | ||
| 144 | void *target) | ||
| 145 | { | ||
| 146 | return bhv_vop_sendfile(vn_from_inode(filp->f_path.dentry->d_inode), | ||
| 147 | filp, pos, IO_INVIS, count, actor, target, NULL); | ||
| 148 | } | ||
| 149 | |||
| 150 | STATIC ssize_t | ||
| 151 | xfs_file_splice_read( | 127 | xfs_file_splice_read( |
| 152 | struct file *infilp, | 128 | struct file *infilp, |
| 153 | loff_t *ppos, | 129 | loff_t *ppos, |
| @@ -452,7 +428,6 @@ const struct file_operations xfs_file_operations = { | |||
| 452 | .write = do_sync_write, | 428 | .write = do_sync_write, |
| 453 | .aio_read = xfs_file_aio_read, | 429 | .aio_read = xfs_file_aio_read, |
| 454 | .aio_write = xfs_file_aio_write, | 430 | .aio_write = xfs_file_aio_write, |
| 455 | .sendfile = xfs_file_sendfile, | ||
| 456 | .splice_read = xfs_file_splice_read, | 431 | .splice_read = xfs_file_splice_read, |
| 457 | .splice_write = xfs_file_splice_write, | 432 | .splice_write = xfs_file_splice_write, |
| 458 | .unlocked_ioctl = xfs_file_ioctl, | 433 | .unlocked_ioctl = xfs_file_ioctl, |
| @@ -475,7 +450,6 @@ const struct file_operations xfs_invis_file_operations = { | |||
| 475 | .write = do_sync_write, | 450 | .write = do_sync_write, |
| 476 | .aio_read = xfs_file_aio_read_invis, | 451 | .aio_read = xfs_file_aio_read_invis, |
| 477 | .aio_write = xfs_file_aio_write_invis, | 452 | .aio_write = xfs_file_aio_write_invis, |
| 478 | .sendfile = xfs_file_sendfile_invis, | ||
| 479 | .splice_read = xfs_file_splice_read_invis, | 453 | .splice_read = xfs_file_splice_read_invis, |
| 480 | .splice_write = xfs_file_splice_write_invis, | 454 | .splice_write = xfs_file_splice_write_invis, |
| 481 | .unlocked_ioctl = xfs_file_ioctl_invis, | 455 | .unlocked_ioctl = xfs_file_ioctl_invis, |
diff --git a/fs/xfs/linux-2.6/xfs_linux.h b/fs/xfs/linux-2.6/xfs_linux.h index 715adad7dd4d..af24a457d3a3 100644 --- a/fs/xfs/linux-2.6/xfs_linux.h +++ b/fs/xfs/linux-2.6/xfs_linux.h | |||
| @@ -101,7 +101,6 @@ | |||
| 101 | * Feature macros (disable/enable) | 101 | * Feature macros (disable/enable) |
| 102 | */ | 102 | */ |
| 103 | #undef HAVE_REFCACHE /* reference cache not needed for NFS in 2.6 */ | 103 | #undef HAVE_REFCACHE /* reference cache not needed for NFS in 2.6 */ |
| 104 | #define HAVE_SENDFILE /* sendfile(2) exists in 2.6, but not in 2.4 */ | ||
| 105 | #define HAVE_SPLICE /* a splice(2) exists in 2.6, but not in 2.4 */ | 104 | #define HAVE_SPLICE /* a splice(2) exists in 2.6, but not in 2.4 */ |
| 106 | #ifdef CONFIG_SMP | 105 | #ifdef CONFIG_SMP |
| 107 | #define HAVE_PERCPU_SB /* per cpu superblock counters are a 2.6 feature */ | 106 | #define HAVE_PERCPU_SB /* per cpu superblock counters are a 2.6 feature */ |
diff --git a/fs/xfs/linux-2.6/xfs_lrw.c b/fs/xfs/linux-2.6/xfs_lrw.c index ed90403f0ee7..765ec16a6e39 100644 --- a/fs/xfs/linux-2.6/xfs_lrw.c +++ b/fs/xfs/linux-2.6/xfs_lrw.c | |||
| @@ -287,50 +287,6 @@ xfs_read( | |||
| 287 | } | 287 | } |
| 288 | 288 | ||
| 289 | ssize_t | 289 | ssize_t |
| 290 | xfs_sendfile( | ||
| 291 | bhv_desc_t *bdp, | ||
| 292 | struct file *filp, | ||
| 293 | loff_t *offset, | ||
| 294 | int ioflags, | ||
| 295 | size_t count, | ||
| 296 | read_actor_t actor, | ||
| 297 | void *target, | ||
| 298 | cred_t *credp) | ||
| 299 | { | ||
| 300 | xfs_inode_t *ip = XFS_BHVTOI(bdp); | ||
| 301 | xfs_mount_t *mp = ip->i_mount; | ||
| 302 | ssize_t ret; | ||
| 303 | |||
| 304 | XFS_STATS_INC(xs_read_calls); | ||
| 305 | if (XFS_FORCED_SHUTDOWN(mp)) | ||
| 306 | return -EIO; | ||
| 307 | |||
| 308 | xfs_ilock(ip, XFS_IOLOCK_SHARED); | ||
| 309 | |||
| 310 | if (DM_EVENT_ENABLED(BHV_TO_VNODE(bdp)->v_vfsp, ip, DM_EVENT_READ) && | ||
| 311 | (!(ioflags & IO_INVIS))) { | ||
| 312 | bhv_vrwlock_t locktype = VRWLOCK_READ; | ||
| 313 | int error; | ||
| 314 | |||
| 315 | error = XFS_SEND_DATA(mp, DM_EVENT_READ, BHV_TO_VNODE(bdp), | ||
| 316 | *offset, count, | ||
| 317 | FILP_DELAY_FLAG(filp), &locktype); | ||
| 318 | if (error) { | ||
| 319 | xfs_iunlock(ip, XFS_IOLOCK_SHARED); | ||
| 320 | return -error; | ||
| 321 | } | ||
| 322 | } | ||
| 323 | xfs_rw_enter_trace(XFS_SENDFILE_ENTER, &ip->i_iocore, | ||
| 324 | (void *)(unsigned long)target, count, *offset, ioflags); | ||
| 325 | ret = generic_file_sendfile(filp, offset, count, actor, target); | ||
| 326 | if (ret > 0) | ||
| 327 | XFS_STATS_ADD(xs_read_bytes, ret); | ||
| 328 | |||
| 329 | xfs_iunlock(ip, XFS_IOLOCK_SHARED); | ||
| 330 | return ret; | ||
| 331 | } | ||
| 332 | |||
| 333 | ssize_t | ||
| 334 | xfs_splice_read( | 290 | xfs_splice_read( |
| 335 | bhv_desc_t *bdp, | 291 | bhv_desc_t *bdp, |
| 336 | struct file *infilp, | 292 | struct file *infilp, |
diff --git a/fs/xfs/linux-2.6/xfs_lrw.h b/fs/xfs/linux-2.6/xfs_lrw.h index 7ac51b1d2161..7c60a1eed88b 100644 --- a/fs/xfs/linux-2.6/xfs_lrw.h +++ b/fs/xfs/linux-2.6/xfs_lrw.h | |||
| @@ -90,9 +90,6 @@ extern ssize_t xfs_read(struct bhv_desc *, struct kiocb *, | |||
| 90 | extern ssize_t xfs_write(struct bhv_desc *, struct kiocb *, | 90 | extern ssize_t xfs_write(struct bhv_desc *, struct kiocb *, |
| 91 | const struct iovec *, unsigned int, | 91 | const struct iovec *, unsigned int, |
| 92 | loff_t *, int, struct cred *); | 92 | loff_t *, int, struct cred *); |
| 93 | extern ssize_t xfs_sendfile(struct bhv_desc *, struct file *, | ||
| 94 | loff_t *, int, size_t, read_actor_t, | ||
| 95 | void *, struct cred *); | ||
| 96 | extern ssize_t xfs_splice_read(struct bhv_desc *, struct file *, loff_t *, | 93 | extern ssize_t xfs_splice_read(struct bhv_desc *, struct file *, loff_t *, |
| 97 | struct pipe_inode_info *, size_t, int, int, | 94 | struct pipe_inode_info *, size_t, int, int, |
| 98 | struct cred *); | 95 | struct cred *); |
diff --git a/fs/xfs/linux-2.6/xfs_vnode.h b/fs/xfs/linux-2.6/xfs_vnode.h index d1b2d01843d1..013048a92643 100644 --- a/fs/xfs/linux-2.6/xfs_vnode.h +++ b/fs/xfs/linux-2.6/xfs_vnode.h | |||
| @@ -139,9 +139,6 @@ typedef ssize_t (*vop_read_t)(bhv_desc_t *, struct kiocb *, | |||
| 139 | typedef ssize_t (*vop_write_t)(bhv_desc_t *, struct kiocb *, | 139 | typedef ssize_t (*vop_write_t)(bhv_desc_t *, struct kiocb *, |
| 140 | const struct iovec *, unsigned int, | 140 | const struct iovec *, unsigned int, |
| 141 | loff_t *, int, struct cred *); | 141 | loff_t *, int, struct cred *); |
| 142 | typedef ssize_t (*vop_sendfile_t)(bhv_desc_t *, struct file *, | ||
| 143 | loff_t *, int, size_t, read_actor_t, | ||
| 144 | void *, struct cred *); | ||
| 145 | typedef ssize_t (*vop_splice_read_t)(bhv_desc_t *, struct file *, loff_t *, | 142 | typedef ssize_t (*vop_splice_read_t)(bhv_desc_t *, struct file *, loff_t *, |
| 146 | struct pipe_inode_info *, size_t, int, int, | 143 | struct pipe_inode_info *, size_t, int, int, |
| 147 | struct cred *); | 144 | struct cred *); |
| @@ -206,7 +203,6 @@ typedef struct bhv_vnodeops { | |||
| 206 | vop_close_t vop_close; | 203 | vop_close_t vop_close; |
| 207 | vop_read_t vop_read; | 204 | vop_read_t vop_read; |
| 208 | vop_write_t vop_write; | 205 | vop_write_t vop_write; |
| 209 | vop_sendfile_t vop_sendfile; | ||
| 210 | vop_splice_read_t vop_splice_read; | 206 | vop_splice_read_t vop_splice_read; |
| 211 | vop_splice_write_t vop_splice_write; | 207 | vop_splice_write_t vop_splice_write; |
| 212 | vop_ioctl_t vop_ioctl; | 208 | vop_ioctl_t vop_ioctl; |
| @@ -254,8 +250,6 @@ typedef struct bhv_vnodeops { | |||
| 254 | VOP(vop_read, vp)(VNHEAD(vp),file,iov,segs,offset,ioflags,cr) | 250 | VOP(vop_read, vp)(VNHEAD(vp),file,iov,segs,offset,ioflags,cr) |
| 255 | #define bhv_vop_write(vp,file,iov,segs,offset,ioflags,cr) \ | 251 | #define bhv_vop_write(vp,file,iov,segs,offset,ioflags,cr) \ |
| 256 | VOP(vop_write, vp)(VNHEAD(vp),file,iov,segs,offset,ioflags,cr) | 252 | VOP(vop_write, vp)(VNHEAD(vp),file,iov,segs,offset,ioflags,cr) |
| 257 | #define bhv_vop_sendfile(vp,f,off,ioflags,cnt,act,targ,cr) \ | ||
| 258 | VOP(vop_sendfile, vp)(VNHEAD(vp),f,off,ioflags,cnt,act,targ,cr) | ||
| 259 | #define bhv_vop_splice_read(vp,f,o,pipe,cnt,fl,iofl,cr) \ | 253 | #define bhv_vop_splice_read(vp,f,o,pipe,cnt,fl,iofl,cr) \ |
| 260 | VOP(vop_splice_read, vp)(VNHEAD(vp),f,o,pipe,cnt,fl,iofl,cr) | 254 | VOP(vop_splice_read, vp)(VNHEAD(vp),f,o,pipe,cnt,fl,iofl,cr) |
| 261 | #define bhv_vop_splice_write(vp,f,o,pipe,cnt,fl,iofl,cr) \ | 255 | #define bhv_vop_splice_write(vp,f,o,pipe,cnt,fl,iofl,cr) \ |
diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c index de17aed578f0..70bc82f65311 100644 --- a/fs/xfs/xfs_vnodeops.c +++ b/fs/xfs/xfs_vnodeops.c | |||
| @@ -4680,9 +4680,6 @@ bhv_vnodeops_t xfs_vnodeops = { | |||
| 4680 | .vop_open = xfs_open, | 4680 | .vop_open = xfs_open, |
| 4681 | .vop_close = xfs_close, | 4681 | .vop_close = xfs_close, |
| 4682 | .vop_read = xfs_read, | 4682 | .vop_read = xfs_read, |
| 4683 | #ifdef HAVE_SENDFILE | ||
| 4684 | .vop_sendfile = xfs_sendfile, | ||
| 4685 | #endif | ||
| 4686 | #ifdef HAVE_SPLICE | 4683 | #ifdef HAVE_SPLICE |
| 4687 | .vop_splice_read = xfs_splice_read, | 4684 | .vop_splice_read = xfs_splice_read, |
| 4688 | .vop_splice_write = xfs_splice_write, | 4685 | .vop_splice_write = xfs_splice_write, |
