Subject: bug#6131: [PATCH]: fiemap support for efficient sparse file copy

From: Jeff liu <[email-masked]>
Date: Wed, 26 Jan 2011 22:16:36 +0800

在 2011-1-26，上午11:58， jeff.liu 写道：

> Jim Meyering wrote:
>> jeff.liu wrote:
>>> Jim Meyering wrote:
>>>> jeff.liu wrote:
>>>>> AFAICS, the tests passed on all filesystems except ext4,
>>>> Really?
>>>> The vast majority of my testing is with ext4 on Fedora 14, and I have seen
>>>> no failure -- otherwise I would have mentioned that as a known problem.
>>> I have mentioned this issue at:
>>> http://osdir.com/ml/bug-coreutils-gnu/2010-09/msg00092.html
>>> 
>>> "make test against cp/sparse-fiemap failed at the extent compare
>>> stage, but the file content is
>>> identical to each other by comparing those two files "j1/j2" manually.
>>> Is it make sense if we verify them through diff(1) since the testing
>>> file is in small size?"
>> 
>> No.  The whole point of the test is to verify that the extents have
>> been preserved in the copy.  Diff doesn't know about extents.
>> 
>>>> What type of system/kernel are you using?
>>> 2.6.33-RC3 && 2.6.36
>>>> Was your ext4 partition created long ago?  With what options?
>>> fiemap copy works well if run `cp' against physical ext4 partition.
>>>> Did "make check" fail?  If so, please provide details.
>>> Yeah, I will show the detail of 'make check' at below.
>> 
>> What version of filefrag are you using?
> Mine comes from E2fsprogs version 1.41.12 shipped with ubuntu8.0.4.
> I updated the filefrag(8) to the upstream one but still no luck. :(
> the kernel I have tried are 2.6.28/2.6.33-RC3/2.6.36.
> 
Hi Jim,

The issue I observed before is weird.

Now  make check passed against the following combination:
1. Refresh installed host in Ubuntu10.0.4, 
filefrag comes from E2fsprogs 1.41.11 && Kernel: 2.6.32-16
2. filefrag in e2fsprogs-1.4.12 && kernel-2.6.36.

$ sudo make check TESTS=cp/sparse-fiemap VERBOSE=yes
[sudo] password for jeff: 
make  check-TESTS
make[1]: Entering directory `/home/jeff/opensoure_dev/coreutils/tests'
make[2]: Entering directory `/home/jeff/opensoure_dev/coreutils/tests'
PASS: cp/sparse-fiemap
=============
1 test passed
=============
make[2]: Leaving directory `/home/jeff/opensoure_dev/coreutils/tests'
make[1]: Leaving directory `/home/jeff/opensoure_dev/coreutils/tests'

Thanks,
-Jeff

>> Mine comes from e2fsprogs-1.41.12-6.fc14.x86_64
>> 
>>> btw, I just checked out the new branch and tried to compile it but ran
>>> into an error:
>>> date.c:30:28: error: parse-datetime.h: No such file or directory
>>> date.c: In function 'batch_convert':
>>> date.c:284: warning: implicit declaration of function 'parse_datetime'
>>> 
>>> I guess 'parse-datetime.h' is shipped with gnulib? For now, I can not
>>> pull the latest gnulib code
>>> since the remote host does not response.
>> 
>> Did you run ./bootstrap ?
> sure, yesterday it failed due to my proxy issue.
> 
> 
> Thanks,
> -Jeff
>> That is a requirement whenever the coreutils
>> pulls in a change to the gnulib submodule.
>> 
>>> For a quick reply, I ran 'make check' against the previous code base
>>> before your latest commit.
>>> 
>>> sudo make check TESTS=cp/sparse-fiemap VERBOSE=yes
>> ...
>>> + filefrag -v j2
>> ...
>>> + awk '/^ *[0-9]/ {printf "%d %d ", $2 ,NF < 5 ? $NF : $5 } END {print ""}'
>>> @a and @b have different lengths, even after adjustment
>>> + fail=1
>> 
>> 
>> 
> 
> 
> 
>