diff options
author | Miklos Szeredi <mszeredi@suse.cz> | 2009-05-19 11:37:46 +0200 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2009-05-19 11:37:46 +0200 |
commit | b2858d7d1639c04ca3c54988d76c5f7300b76f1c (patch) | |
tree | 87bd9ecead14418c44320e2944a0178af64af9ea /block/blk-map.c | |
parent | 4fc981ef9e7c0953d5c4896ce088b19c50cb018f (diff) | |
download | lwn-b2858d7d1639c04ca3c54988d76c5f7300b76f1c.tar.gz lwn-b2858d7d1639c04ca3c54988d76c5f7300b76f1c.zip |
splice: fix kmaps in default_file_splice_write()
Unfortunately multiple kmap() within a single thread are deadlockable,
so writing out multiple buffers with writev() isn't possible.
Change the implementation so that it does a separate write() for each
buffer. This actually simplifies the code a lot since the
splice_from_pipe() helper can be used.
This limitation is caused by HIGHMEM pages, and so only affects a
subset of architectures and configurations. In the future it may be
worth to implement default_file_splice_write() in a more efficient way
on configs that allow it.
Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'block/blk-map.c')
0 files changed, 0 insertions, 0 deletions