On 14/07/10 07:58, jeff.liu wrote:
> Pádraig Brady wrote:
> 
> Hello All,
> 
> I am very sorry for the late response! I have an urgent task need to deliver 
> in the past few weeks.
> 
> Thanks for all your suggestions, I would like to improve the fiemap-copy 
> accordingly, so does the
> following sentence is the final decision?
> 
>> I don't see the need for new options TBH
>> I see fiemap just as a way to efficiently detect/read holes,
>> and should have no bearing on the destination.
>>
>> cp --sparse=auto (this is currently what cp does by default)
>>   recreate the original fiemap holes or resort to existing
>>   heuristic if fiemap not available
>> cp --sparse=never
>>   write all data, but use fiemap if available to efficiently read
>> cp --sparse=always
>>   recreate original holes and perhaps extend add to them for
>>   other runs of zero bytes. Without having looked at the code
>>   I see this as a little tricky to mix with fiemap.
>>   Now since fiemap is only an optimization we can skip it
>>   completely for this uncommon case if too tricky (just add a FIXME for now).

Joel, overlapped with my response and concurred.

> Current code handle 'cp --sparse=auto' and 'cp --sparse=always' in same way 
> since these two options
> all setup 'make_holes' to True, though '--sparse=auto' use a heuristic to 
> determine whether SRC_NAME
> contains any sparse blocks.
> 
> For 'cp --sparse=never', when detected holes from SRC file, do not lseek(2) 
> against DST file,
> instead, write ZEROs to DST file, Am I right?

right

> 
> If so, IMHO, we can pass 'sparse_mode' to fiemap_copy(), then decide how to 
> do operation against DST
> file according to its mode.
> 
> In addition to this, I'd like to fix another issue in current code as Paul 
> suggested,
> 1. Do not allocate buffer in fiemap_copy() for data pass between SRC and DST 
> files, instead, take
> advantage of the buffer allocated outside.

good

> 2. Performance optimization, invoke fallocate(2) if an extent flag is 
> UNWRITTEN
> For this case, maybe we have to wait until fallocate interface become stable 
> just as Pádraig
> methoned before:
> http://lists.gnu.org/archive/html/bug-coreutils/2009-05/msg00260.html

If you decide to do that, then please do it as a separate patch.

cheers,
Pádraig.



Reply via email to