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