lkml.org 
[lkml]   [2006]   [Mar]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH][RFC] splice support
On Wed, Mar 29 2006, Jeff Garzik wrote:
> Jens Axboe wrote:
>
> >index 509ccec..23e2c7c 100644
> >--- a/fs/ext2/file.c
> >+++ b/fs/ext2/file.c
> >@@ -53,6 +53,8 @@ const struct file_operations ext2_file_o
> > .readv = generic_file_readv,
> > .writev = generic_file_writev,
> > .sendfile = generic_file_sendfile,
> >+ .splice_read = generic_file_splice_read,
> >+ .splice_write = generic_file_splice_write,
> > };
> >
> > #ifdef CONFIG_EXT2_FS_XIP
> >diff --git a/fs/ext3/file.c b/fs/ext3/file.c
> >index 783a796..1efefb6 100644
> >--- a/fs/ext3/file.c
> >+++ b/fs/ext3/file.c
> >@@ -119,6 +119,8 @@ const struct file_operations ext3_file_o
> > .release = ext3_release_file,
> > .fsync = ext3_sync_file,
> > .sendfile = generic_file_sendfile,
> >+ .splice_read = generic_file_splice_read,
> >+ .splice_write = generic_file_splice_write,
>
> >+static long do_splice_from(struct inode *pipe, struct file *out, size_t
> >len,
> >+ unsigned long flags)
> >+{
> >+ if (out->f_op && out->f_op->splice_write)
> >+ return out->f_op->splice_write(pipe, out, len, flags);
>
> 1) What are the consequences of doing
>
> if (f_op->splice_write)
> f_op->splice_write(...);
> else
> generic_file_splice_write(...);
>
> to cause sys_splice() to default to supported?

It should probably work, the fs guys should know more about that. Any fs
that ->prepare_write(), ->commit_write() works for can use
generic_file_splice_write(). I prefer to keep it sane for now, mason
tells me that eg xfs might need special care.

> 2) Do you really have to test f_op itself for NULL? Is that a stealth
> closed-file check or something? I would be surprised if f_op was ever
> really NULL.

Probably not, paranoia.

After posting I fixed another bug, essentially making the 'more' flag to
sendpage() be correct. Should improve throughput a little.

--
Jens Axboe

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2006-03-29 15:30    [W:2.558 / U:0.960 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site