TODO hardlink performance optimizations

John Van Essen vanes002 at umn.edu
Wed Jan 7 10:22:11 GMT 2004


On Wed, 7 Jan 2004 01:30:19 -0800, jw schultz <jw at pegasys.ws> wrote:
>
> The steps i see are:
> 
> - The hlink_list change to a pointer array (just committed)
> 
> - Create the union and change file_struct and the routines
>   that reference and populate it to use the union for dev
>   and inode.  This may include not allocating the union for
>   unlinkable files.
> 
> - Overwrite the unions with the linked list stuff and change
>   the logic to use them. Also free the unions for unlinked
>   files.
>   (this is the biggest step)
> 
> - Reduce the hlink_list to just the heads and change
>   do_hard_links.
> 
> - consolidate the fnamecmp finder function for
>   recv_generator() in generator.c and recv_files() in
>   receiver.c
> 
> - Add the list walk for heads that don't exist yet.
> 
> 
> Each of these is a discrete step that when complete the code
> will function correctly.
> 
>> Feel free to start coding.  -)  Not that I'm lazy...  <cough>
> 
> Oh! Sorry to hear that, I am.  The only thing preventing me
> from saying go ahead is my uncertainty whether we both have
> the same design.

Except for the part about allocating and freeing the union, I'm
with ya.  For this initial attempt, shall we just leave the
union in the file_struct (in place of the DEV / INODE vars)?
Maybe move it to the end where it can be conditionally allocated
(leaving a short structure when --hard-links is not used).

Shall we take the coding details discussion off-list?  I imagine
that the faithful readers of this mailing list are getting a bit
weary reading about this fairly obscure bit of code...
-- 
        John Van Essen  Univ of MN Alumnus  <vanes002 at umn.edu>



More information about the rsync mailing list