Messages in this thread | | | Date | Tue, 27 Apr 2004 21:55:03 +0200 | From | Jörn Engel <> | Subject | Re: [PATCH COW] sys_copyfile |
| |
On Tue, 27 April 2004 14:46:19 -0500, Steve French wrote: > On Tue, 2004-04-27 at 11:42, Jörn Engel wrote: > > > Shouldn't it be rather > > > > if (old_nd->dentry->d_inode->i_op->copy) > > return old_nd->dentry->d_inode->i_op->copy(old_nd->dentry, > > mode, new_dentry); > > > > or something similar? The copy() effectively replaces the complete > > create/sendfile/possibly-unlink series. > > In some network protocols the client does not know whether the server > wants to support copy operation or not (perhaps if the files were on > different server partitions the server might return an error e.g), in > those cases the filesystem client could return error not supported or > equivalent and the remainder of your function is executed doing the copy > the harder way (open/read/close create/write/close) but still faster a > few percent faster than before your patch.
Makes sense. Then something like
if (old_nd->dentry->d_inode->i_op->copy) { ret = old_nd->dentry->d_inode->i_op->copy(old_nd->dentry, mode, new_dentry); if (ret != -ENOSYS) return ret; }
Also, would it be possible to do essentially the same with sendfile()? That should bring roughly the same speedup for disk based filesystems, and would be a bit more general.
Jörn
-- Don't patch bad code, rewrite it. -- Kernigham and Pike, according to Rusty - 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/
| |