(2012/08/09 18:00), Amit Shah wrote:
On (Tue) 24 Jul 2012 [11:37:07], Yoshihiro YUNOMAE wrote:
quoted
From: Masami Hiramatsu <redacted>
Enable to use splice_write from pipe to virtio-console port.
This steals pages from pipe and directly send it to host.
Note that this may accelerate only the guest to host path.
Signed-off-by: Masami Hiramatsu <redacted>
Cc: Amit Shah <redacted>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
quoted
+/* Faster zero-copy write by splicing */
+static ssize_t port_fops_splice_write(struct pipe_inode_info *pipe,
+ struct file *filp, loff_t *ppos,
+ size_t len, unsigned int flags)
+{
+ struct port *port = filp->private_data;
+ struct sg_list sgl;
+ ssize_t ret;
+ struct splice_desc sd = {
+ .total_len = len,
+ .flags = flags,
+ .pos = *ppos,
+ .u.data = &sgl,
+ };
+
+ sgl.n = 0;
+ sgl.len = 0;
+ sgl.sg = kmalloc(sizeof(struct scatterlist) * MAX_SPLICE_PAGES,
+ GFP_ATOMIC);
Do you expect this function to be called from interrupt context?
No, not at all. Oops, that should be GFP_KERNEL...
Thank you for pointing it out.
--
Masami HIRAMATSU
Software Platform Research Dept. Linux Technology Center
Hitachi, Ltd., Yokohama Research Laboratory
E-mail: masami.hiramatsu.pt@hitachi.com