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>
This commit is contained in:
Jens Axboe 2007-06-01 11:49:19 +02:00
parent 534f2aaa6a
commit 5ffc4ef45b
37 changed files with 43 additions and 131 deletions

View File

@ -33,7 +33,7 @@ const struct file_operations adfs_file_operations = {
.fsync = file_fsync, .fsync = file_fsync,
.write = do_sync_write, .write = do_sync_write,
.aio_write = generic_file_aio_write, .aio_write = generic_file_aio_write,
.sendfile = generic_file_sendfile, .splice_read = generic_file_splice_read,
}; };
const struct inode_operations adfs_file_inode_operations = { const struct inode_operations adfs_file_inode_operations = {

View File

@ -35,7 +35,7 @@ const struct file_operations affs_file_operations = {
.open = affs_file_open, .open = affs_file_open,
.release = affs_file_release, .release = affs_file_release,
.fsync = file_fsync, .fsync = file_fsync,
.sendfile = generic_file_sendfile, .splice_read = generic_file_splice_read,
}; };
const struct inode_operations affs_file_inode_operations = { const struct inode_operations affs_file_inode_operations = {

View File

@ -32,7 +32,7 @@ const struct file_operations afs_file_operations = {
.aio_read = generic_file_aio_read, .aio_read = generic_file_aio_read,
.aio_write = afs_file_write, .aio_write = afs_file_write,
.mmap = generic_file_readonly_mmap, .mmap = generic_file_readonly_mmap,
.sendfile = generic_file_sendfile, .splice_read = generic_file_splice_read,
.fsync = afs_fsync, .fsync = afs_fsync,
}; };

View File

@ -24,7 +24,7 @@ const struct file_operations bfs_file_operations = {
.write = do_sync_write, .write = do_sync_write,
.aio_write = generic_file_aio_write, .aio_write = generic_file_aio_write,
.mmap = generic_file_mmap, .mmap = generic_file_mmap,
.sendfile = generic_file_sendfile, .splice_read = generic_file_splice_read,
}; };
static int bfs_move_block(unsigned long from, unsigned long to, struct super_block *sb) static int bfs_move_block(unsigned long from, unsigned long to, struct super_block *sb)

View File

@ -1346,7 +1346,6 @@ const struct file_operations def_blk_fops = {
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_ioctl = compat_blkdev_ioctl, .compat_ioctl = compat_blkdev_ioctl,
#endif #endif
.sendfile = generic_file_sendfile,
.splice_read = generic_file_splice_read, .splice_read = generic_file_splice_read,
.splice_write = generic_file_splice_write, .splice_write = generic_file_splice_write,
}; };

View File

@ -616,7 +616,7 @@ const struct file_operations cifs_file_ops = {
.fsync = cifs_fsync, .fsync = cifs_fsync,
.flush = cifs_flush, .flush = cifs_flush,
.mmap = cifs_file_mmap, .mmap = cifs_file_mmap,
.sendfile = generic_file_sendfile, .splice_read = generic_file_splice_read,
.llseek = cifs_llseek, .llseek = cifs_llseek,
#ifdef CONFIG_CIFS_POSIX #ifdef CONFIG_CIFS_POSIX
.ioctl = cifs_ioctl, .ioctl = cifs_ioctl,
@ -637,7 +637,7 @@ const struct file_operations cifs_file_direct_ops = {
.lock = cifs_lock, .lock = cifs_lock,
.fsync = cifs_fsync, .fsync = cifs_fsync,
.flush = cifs_flush, .flush = cifs_flush,
.sendfile = generic_file_sendfile, /* BB removeme BB */ .splice_read = generic_file_splice_read,
#ifdef CONFIG_CIFS_POSIX #ifdef CONFIG_CIFS_POSIX
.ioctl = cifs_ioctl, .ioctl = cifs_ioctl,
#endif /* CONFIG_CIFS_POSIX */ #endif /* CONFIG_CIFS_POSIX */
@ -656,7 +656,7 @@ const struct file_operations cifs_file_nobrl_ops = {
.fsync = cifs_fsync, .fsync = cifs_fsync,
.flush = cifs_flush, .flush = cifs_flush,
.mmap = cifs_file_mmap, .mmap = cifs_file_mmap,
.sendfile = generic_file_sendfile, .splice_read = generic_file_splice_read,
.llseek = cifs_llseek, .llseek = cifs_llseek,
#ifdef CONFIG_CIFS_POSIX #ifdef CONFIG_CIFS_POSIX
.ioctl = cifs_ioctl, .ioctl = cifs_ioctl,
@ -676,7 +676,7 @@ const struct file_operations cifs_file_direct_nobrl_ops = {
.release = cifs_close, .release = cifs_close,
.fsync = cifs_fsync, .fsync = cifs_fsync,
.flush = cifs_flush, .flush = cifs_flush,
.sendfile = generic_file_sendfile, /* BB removeme BB */ .splice_read = generic_file_splice_read,
#ifdef CONFIG_CIFS_POSIX #ifdef CONFIG_CIFS_POSIX
.ioctl = cifs_ioctl, .ioctl = cifs_ioctl,
#endif /* CONFIG_CIFS_POSIX */ #endif /* CONFIG_CIFS_POSIX */

View File

@ -47,8 +47,9 @@ coda_file_read(struct file *coda_file, char __user *buf, size_t count, loff_t *p
} }
static ssize_t static ssize_t
coda_file_sendfile(struct file *coda_file, loff_t *ppos, size_t count, coda_file_splice_read(struct file *coda_file, loff_t *ppos,
read_actor_t actor, void *target) struct pipe_inode_info *pipe, size_t count,
unsigned int flags)
{ {
struct coda_file_info *cfi; struct coda_file_info *cfi;
struct file *host_file; struct file *host_file;
@ -57,10 +58,10 @@ coda_file_sendfile(struct file *coda_file, loff_t *ppos, size_t count,
BUG_ON(!cfi || cfi->cfi_magic != CODA_MAGIC); BUG_ON(!cfi || cfi->cfi_magic != CODA_MAGIC);
host_file = cfi->cfi_container; host_file = cfi->cfi_container;
if (!host_file->f_op || !host_file->f_op->sendfile) if (!host_file->f_op || !host_file->f_op->splice_read)
return -EINVAL; return -EINVAL;
return host_file->f_op->sendfile(host_file, ppos, count, actor, target); return host_file->f_op->splice_read(host_file, ppos, pipe, count,flags);
} }
static ssize_t static ssize_t
@ -295,6 +296,6 @@ const struct file_operations coda_file_operations = {
.flush = coda_flush, .flush = coda_flush,
.release = coda_release, .release = coda_release,
.fsync = coda_fsync, .fsync = coda_fsync,
.sendfile = coda_file_sendfile, .splice_read = coda_file_splice_read,
}; };

View File

@ -338,16 +338,17 @@ static int ecryptfs_fasync(int fd, struct file *file, int flag)
return rc; return rc;
} }
static ssize_t ecryptfs_sendfile(struct file *file, loff_t * ppos, static ssize_t ecryptfs_splice_read(struct file *file, loff_t * ppos,
size_t count, read_actor_t actor, void *target) struct pipe_inode_info *pipe, size_t count,
unsigned int flags)
{ {
struct file *lower_file = NULL; struct file *lower_file = NULL;
int rc = -EINVAL; int rc = -EINVAL;
lower_file = ecryptfs_file_to_lower(file); lower_file = ecryptfs_file_to_lower(file);
if (lower_file->f_op && lower_file->f_op->sendfile) if (lower_file->f_op && lower_file->f_op->splice_read)
rc = lower_file->f_op->sendfile(lower_file, ppos, count, rc = lower_file->f_op->splice_read(lower_file, ppos, pipe,
actor, target); count, flags);
return rc; return rc;
} }
@ -364,7 +365,7 @@ const struct file_operations ecryptfs_dir_fops = {
.release = ecryptfs_release, .release = ecryptfs_release,
.fsync = ecryptfs_fsync, .fsync = ecryptfs_fsync,
.fasync = ecryptfs_fasync, .fasync = ecryptfs_fasync,
.sendfile = ecryptfs_sendfile, .splice_read = ecryptfs_splice_read,
}; };
const struct file_operations ecryptfs_main_fops = { const struct file_operations ecryptfs_main_fops = {
@ -381,7 +382,7 @@ const struct file_operations ecryptfs_main_fops = {
.release = ecryptfs_release, .release = ecryptfs_release,
.fsync = ecryptfs_fsync, .fsync = ecryptfs_fsync,
.fasync = ecryptfs_fasync, .fasync = ecryptfs_fasync,
.sendfile = ecryptfs_sendfile, .splice_read = ecryptfs_splice_read,
}; };
static int static int

View File

@ -53,7 +53,6 @@ const struct file_operations ext2_file_operations = {
.open = generic_file_open, .open = generic_file_open,
.release = ext2_release_file, .release = ext2_release_file,
.fsync = ext2_sync_file, .fsync = ext2_sync_file,
.sendfile = generic_file_sendfile,
.splice_read = generic_file_splice_read, .splice_read = generic_file_splice_read,
.splice_write = generic_file_splice_write, .splice_write = generic_file_splice_write,
}; };

View File

@ -120,7 +120,6 @@ const struct file_operations ext3_file_operations = {
.open = generic_file_open, .open = generic_file_open,
.release = ext3_release_file, .release = ext3_release_file,
.fsync = ext3_sync_file, .fsync = ext3_sync_file,
.sendfile = generic_file_sendfile,
.splice_read = generic_file_splice_read, .splice_read = generic_file_splice_read,
.splice_write = generic_file_splice_write, .splice_write = generic_file_splice_write,
}; };

View File

@ -120,7 +120,6 @@ const struct file_operations ext4_file_operations = {
.open = generic_file_open, .open = generic_file_open,
.release = ext4_release_file, .release = ext4_release_file,
.fsync = ext4_sync_file, .fsync = ext4_sync_file,
.sendfile = generic_file_sendfile,
.splice_read = generic_file_splice_read, .splice_read = generic_file_splice_read,
.splice_write = generic_file_splice_write, .splice_write = generic_file_splice_write,
}; };

View File

@ -134,7 +134,7 @@ const struct file_operations fat_file_operations = {
.release = fat_file_release, .release = fat_file_release,
.ioctl = fat_generic_ioctl, .ioctl = fat_generic_ioctl,
.fsync = file_fsync, .fsync = file_fsync,
.sendfile = generic_file_sendfile, .splice_read = generic_file_splice_read,
}; };
static int fat_cont_expand(struct inode *inode, loff_t size) static int fat_cont_expand(struct inode *inode, loff_t size)

View File

@ -802,7 +802,7 @@ static const struct file_operations fuse_file_operations = {
.release = fuse_release, .release = fuse_release,
.fsync = fuse_fsync, .fsync = fuse_fsync,
.lock = fuse_file_lock, .lock = fuse_file_lock,
.sendfile = generic_file_sendfile, .splice_read = generic_file_splice_read,
}; };
static const struct file_operations fuse_direct_io_file_operations = { static const struct file_operations fuse_direct_io_file_operations = {
@ -814,7 +814,7 @@ static const struct file_operations fuse_direct_io_file_operations = {
.release = fuse_release, .release = fuse_release,
.fsync = fuse_fsync, .fsync = fuse_fsync,
.lock = fuse_file_lock, .lock = fuse_file_lock,
/* no mmap and sendfile */ /* no mmap and splice_read */
}; };
static const struct address_space_operations fuse_file_aops = { static const struct address_space_operations fuse_file_aops = {

View File

@ -635,7 +635,6 @@ const struct file_operations gfs2_file_fops = {
.release = gfs2_close, .release = gfs2_close,
.fsync = gfs2_fsync, .fsync = gfs2_fsync,
.lock = gfs2_lock, .lock = gfs2_lock,
.sendfile = generic_file_sendfile,
.flock = gfs2_flock, .flock = gfs2_flock,
.splice_read = generic_file_splice_read, .splice_read = generic_file_splice_read,
.splice_write = generic_file_splice_write, .splice_write = generic_file_splice_write,

View File

@ -607,7 +607,7 @@ static const struct file_operations hfs_file_operations = {
.write = do_sync_write, .write = do_sync_write,
.aio_write = generic_file_aio_write, .aio_write = generic_file_aio_write,
.mmap = generic_file_mmap, .mmap = generic_file_mmap,
.sendfile = generic_file_sendfile, .splice_read = generic_file_splice_read,
.fsync = file_fsync, .fsync = file_fsync,
.open = hfs_file_open, .open = hfs_file_open,
.release = hfs_file_release, .release = hfs_file_release,

View File

@ -288,7 +288,7 @@ static const struct file_operations hfsplus_file_operations = {
.write = do_sync_write, .write = do_sync_write,
.aio_write = generic_file_aio_write, .aio_write = generic_file_aio_write,
.mmap = generic_file_mmap, .mmap = generic_file_mmap,
.sendfile = generic_file_sendfile, .splice_read = generic_file_splice_read,
.fsync = file_fsync, .fsync = file_fsync,
.open = hfsplus_file_open, .open = hfsplus_file_open,
.release = hfsplus_file_release, .release = hfsplus_file_release,

View File

@ -390,7 +390,7 @@ int hostfs_fsync(struct file *file, struct dentry *dentry, int datasync)
static const struct file_operations hostfs_file_fops = { static const struct file_operations hostfs_file_fops = {
.llseek = generic_file_llseek, .llseek = generic_file_llseek,
.read = do_sync_read, .read = do_sync_read,
.sendfile = generic_file_sendfile, .splice_read = generic_file_splice_read,
.aio_read = generic_file_aio_read, .aio_read = generic_file_aio_read,
.aio_write = generic_file_aio_write, .aio_write = generic_file_aio_write,
.write = do_sync_write, .write = do_sync_write,

View File

@ -129,7 +129,7 @@ const struct file_operations hpfs_file_ops =
.mmap = generic_file_mmap, .mmap = generic_file_mmap,
.release = hpfs_file_release, .release = hpfs_file_release,
.fsync = hpfs_file_fsync, .fsync = hpfs_file_fsync,
.sendfile = generic_file_sendfile, .splice_read = generic_file_splice_read,
}; };
const struct inode_operations hpfs_file_iops = const struct inode_operations hpfs_file_iops =

View File

@ -47,7 +47,7 @@ const struct file_operations jffs2_file_operations =
.ioctl = jffs2_ioctl, .ioctl = jffs2_ioctl,
.mmap = generic_file_readonly_mmap, .mmap = generic_file_readonly_mmap,
.fsync = jffs2_fsync, .fsync = jffs2_fsync,
.sendfile = generic_file_sendfile .splice_read = generic_file_splice_read,
}; };
/* jffs2_file_inode_operations */ /* jffs2_file_inode_operations */

View File

@ -108,7 +108,6 @@ const struct file_operations jfs_file_operations = {
.aio_read = generic_file_aio_read, .aio_read = generic_file_aio_read,
.aio_write = generic_file_aio_write, .aio_write = generic_file_aio_write,
.mmap = generic_file_mmap, .mmap = generic_file_mmap,
.sendfile = generic_file_sendfile,
.splice_read = generic_file_splice_read, .splice_read = generic_file_splice_read,
.splice_write = generic_file_splice_write, .splice_write = generic_file_splice_write,
.fsync = jfs_fsync, .fsync = jfs_fsync,

View File

@ -23,7 +23,7 @@ const struct file_operations minix_file_operations = {
.aio_write = generic_file_aio_write, .aio_write = generic_file_aio_write,
.mmap = generic_file_mmap, .mmap = generic_file_mmap,
.fsync = minix_sync_file, .fsync = minix_sync_file,
.sendfile = generic_file_sendfile, .splice_read = generic_file_splice_read,
}; };
const struct inode_operations minix_file_inode_operations = { const struct inode_operations minix_file_inode_operations = {

View File

@ -2276,7 +2276,7 @@ const struct file_operations ntfs_file_ops = {
mounted filesystem. */ mounted filesystem. */
.mmap = generic_file_mmap, /* Mmap file. */ .mmap = generic_file_mmap, /* Mmap file. */
.open = ntfs_file_open, /* Open file. */ .open = ntfs_file_open, /* Open file. */
.sendfile = generic_file_sendfile, /* Zero-copy data send with .splice_read = generic_file_splice_read /* Zero-copy data send with
the data source being on the data source being on
the ntfs partition. We do the ntfs partition. We do
not need to care about the not need to care about the

View File

@ -1822,7 +1822,6 @@ const struct inode_operations ocfs2_special_file_iops = {
const struct file_operations ocfs2_fops = { const struct file_operations ocfs2_fops = {
.read = do_sync_read, .read = do_sync_read,
.write = do_sync_write, .write = do_sync_write,
.sendfile = generic_file_sendfile,
.mmap = ocfs2_mmap, .mmap = ocfs2_mmap,
.fsync = ocfs2_sync_file, .fsync = ocfs2_sync_file,
.release = ocfs2_file_release, .release = ocfs2_file_release,

View File

@ -25,7 +25,7 @@ const struct file_operations qnx4_file_operations =
.read = do_sync_read, .read = do_sync_read,
.aio_read = generic_file_aio_read, .aio_read = generic_file_aio_read,
.mmap = generic_file_mmap, .mmap = generic_file_mmap,
.sendfile = generic_file_sendfile, .splice_read = generic_file_splice_read,
#ifdef CONFIG_QNX4FS_RW #ifdef CONFIG_QNX4FS_RW
.write = do_sync_write, .write = do_sync_write,
.aio_write = generic_file_aio_write, .aio_write = generic_file_aio_write,

View File

@ -41,7 +41,7 @@ const struct file_operations ramfs_file_operations = {
.aio_write = generic_file_aio_write, .aio_write = generic_file_aio_write,
.mmap = generic_file_mmap, .mmap = generic_file_mmap,
.fsync = simple_sync_file, .fsync = simple_sync_file,
.sendfile = generic_file_sendfile, .splice_read = generic_file_splice_read,
.llseek = generic_file_llseek, .llseek = generic_file_llseek,
}; };

View File

@ -42,7 +42,7 @@ const struct file_operations ramfs_file_operations = {
.write = do_sync_write, .write = do_sync_write,
.aio_write = generic_file_aio_write, .aio_write = generic_file_aio_write,
.fsync = simple_sync_file, .fsync = simple_sync_file,
.sendfile = generic_file_sendfile, .splice_read = generic_file_splice_read,
.llseek = generic_file_llseek, .llseek = generic_file_llseek,
}; };

View File

@ -1531,7 +1531,6 @@ const struct file_operations reiserfs_file_operations = {
.open = generic_file_open, .open = generic_file_open,
.release = reiserfs_file_release, .release = reiserfs_file_release,
.fsync = reiserfs_sync_file, .fsync = reiserfs_sync_file,
.sendfile = generic_file_sendfile,
.aio_read = generic_file_aio_read, .aio_read = generic_file_aio_read,
.aio_write = generic_file_aio_write, .aio_write = generic_file_aio_write,
.splice_read = generic_file_splice_read, .splice_read = generic_file_splice_read,

View File

@ -262,8 +262,9 @@ out:
} }
static ssize_t static ssize_t
smb_file_sendfile(struct file *file, loff_t *ppos, smb_file_splice_read(struct file *file, loff_t *ppos,
size_t count, read_actor_t actor, void *target) struct pipe_inode_info *pipe, size_t count,
unsigned int flags)
{ {
struct dentry *dentry = file->f_path.dentry; struct dentry *dentry = file->f_path.dentry;
ssize_t status; ssize_t status;
@ -277,7 +278,7 @@ smb_file_sendfile(struct file *file, loff_t *ppos,
DENTRY_PATH(dentry), status); DENTRY_PATH(dentry), status);
goto out; goto out;
} }
status = generic_file_sendfile(file, ppos, count, actor, target); status = generic_file_splice_read(file, ppos, pipe, count, flags);
out: out:
return status; return status;
} }
@ -416,7 +417,7 @@ const struct file_operations smb_file_operations =
.open = smb_file_open, .open = smb_file_open,
.release = smb_file_release, .release = smb_file_release,
.fsync = smb_fsync, .fsync = smb_fsync,
.sendfile = smb_file_sendfile, .splice_read = smb_file_splice_read,
}; };
const struct inode_operations smb_file_inode_operations = const struct inode_operations smb_file_inode_operations =

View File

@ -27,7 +27,7 @@ const struct file_operations sysv_file_operations = {
.aio_write = generic_file_aio_write, .aio_write = generic_file_aio_write,
.mmap = generic_file_mmap, .mmap = generic_file_mmap,
.fsync = sysv_sync_file, .fsync = sysv_sync_file,
.sendfile = generic_file_sendfile, .splice_read = generic_file_splice_read,
}; };
const struct inode_operations sysv_file_inode_operations = { const struct inode_operations sysv_file_inode_operations = {

View File

@ -261,7 +261,7 @@ const struct file_operations udf_file_operations = {
.aio_write = udf_file_aio_write, .aio_write = udf_file_aio_write,
.release = udf_release_file, .release = udf_release_file,
.fsync = udf_fsync_file, .fsync = udf_fsync_file,
.sendfile = generic_file_sendfile, .splice_read = generic_file_splice_read,
}; };
const struct inode_operations udf_file_inode_operations = { const struct inode_operations udf_file_inode_operations = {

View File

@ -60,5 +60,5 @@ const struct file_operations ufs_file_operations = {
.mmap = generic_file_mmap, .mmap = generic_file_mmap,
.open = generic_file_open, .open = generic_file_open,
.fsync = ufs_sync_file, .fsync = ufs_sync_file,
.sendfile = generic_file_sendfile, .splice_read = generic_file_splice_read,
}; };

View File

@ -123,30 +123,6 @@ xfs_file_aio_write_invis(
return __xfs_file_write(iocb, iov, nr_segs, IO_ISAIO|IO_INVIS, pos); return __xfs_file_write(iocb, iov, nr_segs, IO_ISAIO|IO_INVIS, pos);
} }
STATIC ssize_t
xfs_file_sendfile(
struct file *filp,
loff_t *pos,
size_t count,
read_actor_t actor,
void *target)
{
return bhv_vop_sendfile(vn_from_inode(filp->f_path.dentry->d_inode),
filp, pos, 0, count, actor, target, NULL);
}
STATIC ssize_t
xfs_file_sendfile_invis(
struct file *filp,
loff_t *pos,
size_t count,
read_actor_t actor,
void *target)
{
return bhv_vop_sendfile(vn_from_inode(filp->f_path.dentry->d_inode),
filp, pos, IO_INVIS, count, actor, target, NULL);
}
STATIC ssize_t STATIC ssize_t
xfs_file_splice_read( xfs_file_splice_read(
struct file *infilp, struct file *infilp,
@ -452,7 +428,6 @@ const struct file_operations xfs_file_operations = {
.write = do_sync_write, .write = do_sync_write,
.aio_read = xfs_file_aio_read, .aio_read = xfs_file_aio_read,
.aio_write = xfs_file_aio_write, .aio_write = xfs_file_aio_write,
.sendfile = xfs_file_sendfile,
.splice_read = xfs_file_splice_read, .splice_read = xfs_file_splice_read,
.splice_write = xfs_file_splice_write, .splice_write = xfs_file_splice_write,
.unlocked_ioctl = xfs_file_ioctl, .unlocked_ioctl = xfs_file_ioctl,
@ -475,7 +450,6 @@ const struct file_operations xfs_invis_file_operations = {
.write = do_sync_write, .write = do_sync_write,
.aio_read = xfs_file_aio_read_invis, .aio_read = xfs_file_aio_read_invis,
.aio_write = xfs_file_aio_write_invis, .aio_write = xfs_file_aio_write_invis,
.sendfile = xfs_file_sendfile_invis,
.splice_read = xfs_file_splice_read_invis, .splice_read = xfs_file_splice_read_invis,
.splice_write = xfs_file_splice_write_invis, .splice_write = xfs_file_splice_write_invis,
.unlocked_ioctl = xfs_file_ioctl_invis, .unlocked_ioctl = xfs_file_ioctl_invis,

View File

@ -101,7 +101,6 @@
* Feature macros (disable/enable) * Feature macros (disable/enable)
*/ */
#undef HAVE_REFCACHE /* reference cache not needed for NFS in 2.6 */ #undef HAVE_REFCACHE /* reference cache not needed for NFS in 2.6 */
#define HAVE_SENDFILE /* sendfile(2) exists in 2.6, but not in 2.4 */
#define HAVE_SPLICE /* a splice(2) exists in 2.6, but not in 2.4 */ #define HAVE_SPLICE /* a splice(2) exists in 2.6, but not in 2.4 */
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
#define HAVE_PERCPU_SB /* per cpu superblock counters are a 2.6 feature */ #define HAVE_PERCPU_SB /* per cpu superblock counters are a 2.6 feature */

View File

@ -286,50 +286,6 @@ xfs_read(
return ret; return ret;
} }
ssize_t
xfs_sendfile(
bhv_desc_t *bdp,
struct file *filp,
loff_t *offset,
int ioflags,
size_t count,
read_actor_t actor,
void *target,
cred_t *credp)
{
xfs_inode_t *ip = XFS_BHVTOI(bdp);
xfs_mount_t *mp = ip->i_mount;
ssize_t ret;
XFS_STATS_INC(xs_read_calls);
if (XFS_FORCED_SHUTDOWN(mp))
return -EIO;
xfs_ilock(ip, XFS_IOLOCK_SHARED);
if (DM_EVENT_ENABLED(BHV_TO_VNODE(bdp)->v_vfsp, ip, DM_EVENT_READ) &&
(!(ioflags & IO_INVIS))) {
bhv_vrwlock_t locktype = VRWLOCK_READ;
int error;
error = XFS_SEND_DATA(mp, DM_EVENT_READ, BHV_TO_VNODE(bdp),
*offset, count,
FILP_DELAY_FLAG(filp), &locktype);
if (error) {
xfs_iunlock(ip, XFS_IOLOCK_SHARED);
return -error;
}
}
xfs_rw_enter_trace(XFS_SENDFILE_ENTER, &ip->i_iocore,
(void *)(unsigned long)target, count, *offset, ioflags);
ret = generic_file_sendfile(filp, offset, count, actor, target);
if (ret > 0)
XFS_STATS_ADD(xs_read_bytes, ret);
xfs_iunlock(ip, XFS_IOLOCK_SHARED);
return ret;
}
ssize_t ssize_t
xfs_splice_read( xfs_splice_read(
bhv_desc_t *bdp, bhv_desc_t *bdp,

View File

@ -90,9 +90,6 @@ extern ssize_t xfs_read(struct bhv_desc *, struct kiocb *,
extern ssize_t xfs_write(struct bhv_desc *, struct kiocb *, extern ssize_t xfs_write(struct bhv_desc *, struct kiocb *,
const struct iovec *, unsigned int, const struct iovec *, unsigned int,
loff_t *, int, struct cred *); loff_t *, int, struct cred *);
extern ssize_t xfs_sendfile(struct bhv_desc *, struct file *,
loff_t *, int, size_t, read_actor_t,
void *, struct cred *);
extern ssize_t xfs_splice_read(struct bhv_desc *, struct file *, loff_t *, extern ssize_t xfs_splice_read(struct bhv_desc *, struct file *, loff_t *,
struct pipe_inode_info *, size_t, int, int, struct pipe_inode_info *, size_t, int, int,
struct cred *); struct cred *);

View File

@ -139,9 +139,6 @@ typedef ssize_t (*vop_read_t)(bhv_desc_t *, struct kiocb *,
typedef ssize_t (*vop_write_t)(bhv_desc_t *, struct kiocb *, typedef ssize_t (*vop_write_t)(bhv_desc_t *, struct kiocb *,
const struct iovec *, unsigned int, const struct iovec *, unsigned int,
loff_t *, int, struct cred *); loff_t *, int, struct cred *);
typedef ssize_t (*vop_sendfile_t)(bhv_desc_t *, struct file *,
loff_t *, int, size_t, read_actor_t,
void *, struct cred *);
typedef ssize_t (*vop_splice_read_t)(bhv_desc_t *, struct file *, loff_t *, typedef ssize_t (*vop_splice_read_t)(bhv_desc_t *, struct file *, loff_t *,
struct pipe_inode_info *, size_t, int, int, struct pipe_inode_info *, size_t, int, int,
struct cred *); struct cred *);
@ -206,7 +203,6 @@ typedef struct bhv_vnodeops {
vop_close_t vop_close; vop_close_t vop_close;
vop_read_t vop_read; vop_read_t vop_read;
vop_write_t vop_write; vop_write_t vop_write;
vop_sendfile_t vop_sendfile;
vop_splice_read_t vop_splice_read; vop_splice_read_t vop_splice_read;
vop_splice_write_t vop_splice_write; vop_splice_write_t vop_splice_write;
vop_ioctl_t vop_ioctl; vop_ioctl_t vop_ioctl;
@ -254,8 +250,6 @@ typedef struct bhv_vnodeops {
VOP(vop_read, vp)(VNHEAD(vp),file,iov,segs,offset,ioflags,cr) VOP(vop_read, vp)(VNHEAD(vp),file,iov,segs,offset,ioflags,cr)
#define bhv_vop_write(vp,file,iov,segs,offset,ioflags,cr) \ #define bhv_vop_write(vp,file,iov,segs,offset,ioflags,cr) \
VOP(vop_write, vp)(VNHEAD(vp),file,iov,segs,offset,ioflags,cr) VOP(vop_write, vp)(VNHEAD(vp),file,iov,segs,offset,ioflags,cr)
#define bhv_vop_sendfile(vp,f,off,ioflags,cnt,act,targ,cr) \
VOP(vop_sendfile, vp)(VNHEAD(vp),f,off,ioflags,cnt,act,targ,cr)
#define bhv_vop_splice_read(vp,f,o,pipe,cnt,fl,iofl,cr) \ #define bhv_vop_splice_read(vp,f,o,pipe,cnt,fl,iofl,cr) \
VOP(vop_splice_read, vp)(VNHEAD(vp),f,o,pipe,cnt,fl,iofl,cr) VOP(vop_splice_read, vp)(VNHEAD(vp),f,o,pipe,cnt,fl,iofl,cr)
#define bhv_vop_splice_write(vp,f,o,pipe,cnt,fl,iofl,cr) \ #define bhv_vop_splice_write(vp,f,o,pipe,cnt,fl,iofl,cr) \

View File

@ -4680,9 +4680,6 @@ bhv_vnodeops_t xfs_vnodeops = {
.vop_open = xfs_open, .vop_open = xfs_open,
.vop_close = xfs_close, .vop_close = xfs_close,
.vop_read = xfs_read, .vop_read = xfs_read,
#ifdef HAVE_SENDFILE
.vop_sendfile = xfs_sendfile,
#endif
#ifdef HAVE_SPLICE #ifdef HAVE_SPLICE
.vop_splice_read = xfs_splice_read, .vop_splice_read = xfs_splice_read,
.vop_splice_write = xfs_splice_write, .vop_splice_write = xfs_splice_write,