vserver 1.9.3
[linux-2.6.git] / fs / coda / file.c
index f0c867c..ba4141a 100644 (file)
@@ -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,
 };