On Fri, Jul 16, 2010 at 08:53:27AM -0700, Paul Eggert wrote: > I haven't had time to look at it carefully, but here's a very brief > review. The code you sent, like what's in the fiemap branch, has > a separate version of a chunk of copy.c that does both reading > and writing and optimizes both reading and writing by invoking the fiemap > ioctls > at strategic locations. Instead, it would be better to have > a module that separates out the efficient-read stuff by telling > copy.c where the next significant input extent is, and then modify copy.c > to use that module. On hosts that do not support fiemap, the module > would simply report the entire input file as that file's only extent.
Precisely. The sparse-core.c or whatever it is called shouldn't be doing the copy, it should just provide: handle = init_extent_scan(fd); while (get_next_extent(handle, &extent_start, &extent_len)) { ... } close_extent_scan(handle); Then copy.c just implements this loop and the '...' part. Joel -- "A narcissist is someone better looking than you are." - Gore Vidal Joel Becker Consulting Software Developer Oracle E-mail: joel.bec...@oracle.com Phone: (650) 506-8127