Messages in this thread | | | Date | Wed, 29 Mar 2006 15:27:25 +0200 | From | Jens Axboe <> | Subject | Re: [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/
| |