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



Reply via email to