mmap will indeed get a file into user mem space without any memcopy
operation. But as far as I can tell from examining generic_file_write
(in mm/filemap.c) used by ext2 and I asume many others, a write will
copy the memory even if it was mapped via mmap. Am I missing
something? This isn't true if kiobuf is used but as I understand it,
this bypasses the buffer cache.
I would like to see a zero-memcopy file copy. A file copy that would
read the file into the buffer cache if its not already there similar to
a normal read then write it back to disk from the cache without
duplicating the pages. This would probably lead to modifying the buffer
cache to allow multiple buffer_heads to refer to the same data which
might not be worth the overhead.
One might implement such a thing by attempting in the generic_file_read
to determine if the memory range is an actual page or pages that can be
eventually written to the disk without a memcopy. This could
conceivably make duplications between different files to not take up
duplicate pages. But what is the chance that there are any sizeable
number of identical pages in the buffer cache do to anything but a file
copy?
-
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/