X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=fs%2Fcoda%2Ffile.c;h=ba4141a95209afb3fbed868bac6d0112b063e957;hb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;hp=f0c867c7e258c9542dcdd56d16c4f3e89716e71b;hpb=a2c21200f1c81b08cb55e417b68150bba439b646;p=linux-2.6.git diff --git a/fs/coda/file.c b/fs/coda/file.c index f0c867c7e..ba4141a95 100644 --- a/fs/coda/file.c +++ b/fs/coda/file.c @@ -44,6 +44,23 @@ coda_file_read(struct file *coda_file, char __user *buf, size_t count, loff_t *p return host_file->f_op->read(host_file, buf, count, ppos); } +static ssize_t +coda_file_sendfile(struct file *coda_file, loff_t *ppos, size_t count, + read_actor_t actor, void *target) +{ + struct coda_file_info *cfi; + struct file *host_file; + + cfi = CODA_FTOC(coda_file); + BUG_ON(!cfi || cfi->cfi_magic != CODA_MAGIC); + host_file = cfi->cfi_container; + + if (!host_file->f_op || !host_file->f_op->sendfile) + return -EINVAL; + + return host_file->f_op->sendfile(host_file, ppos, count, actor, target); +} + static ssize_t coda_file_write(struct file *coda_file, const char __user *buf, size_t count, loff_t *ppos) { @@ -278,5 +295,6 @@ struct file_operations coda_file_operations = { .flush = coda_flush, .release = coda_release, .fsync = coda_fsync, + .sendfile = coda_file_sendfile, };