[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#6131: [PATCH]: fiemap support for efficient sparse file copy
From: |
Jim Meyering |
Subject: |
bug#6131: [PATCH]: fiemap support for efficient sparse file copy |
Date: |
Fri, 21 May 2010 17:42:25 +0200 |
jeff.liu wrote:
...
> Sorry for the lack of detailed info for this point, except for removing the
> fiemap->fm_start from
> the loop, I need to remove "fiemap->fm_start = (fm_ext[i-1].fe_logical +
> fm_ext[i-1].fe_length);"
> out of the 'for (i = 0; i < fiemap->fm_mapped_extents; i++)" as well.
> So, if there is only one extent, at least 'i == 1' when the loop finished,
> we'll not hit the
> 'fm_ext[-1]' issue.
>
> my thoughts of the fix looks like below:
>
> memset (fiemap, 0, sizeof fiemap_buf);
> do
> {
> ioctl (...);
>
> for (i = 0; i < fiemap->fm_mapped_extents; i++)
> {
> ...
> }
> fiemap->fm_start = (fm_ext[i-1].fe_logical + fm_ext[i-1].fe_length);
> } while (! last);
That is better.
Equivalent semantics to my change, but yours avoids unnecessarily
updating fiemap->fm_start for each iteration of the for loop.
...
>> For reference, here's what filefrag -v output looks like,
>> given a file with a nontrivial list of extents:
>>
>> $ perl -e 'BEGIN{$n=16*1024; *F=*STDOUT}' \
>> -e 'for (1..5) { sysseek(*F,$n,1)' \
>> -e '&& syswrite *F,"."x$n or die "$!"}' > j
>> $ filefrag -v j
>> Filesystem type is: ef53
>> File size of j is 163840 (40 blocks, blocksize 4096)
>> ext logical physical expected length flags
>> 0 4 6258884 4
>> 1 12 6258892 6258887 4
>> 2 20 6258900 6258895 4
>> 3 28 6258908 6258903 4
>> 4 36 6258916 6258911 4 eof
>> j: 6 extents found
> Do we need another test script for this test if we choose `filefrag' to
> examine the extent info?
Yes, that's why I took the time to do the above.
I've already written most of it. Will post shortly.
- bug#6131: [PATCH]: fiemap support for efficient sparse file copy, jeff.liu, 2010/05/07
- bug#6131: [PATCH]: fiemap support for efficient sparse file copy, Jim Meyering, 2010/05/21
- bug#6131: [PATCH]: fiemap support for efficient sparse file copy, jeff.liu, 2010/05/21
- bug#6131: [PATCH]: fiemap support for efficient sparse file copy, Jim Meyering, 2010/05/24
- bug#6131: [PATCH]: fiemap support for efficient sparse file copy, jeff.liu, 2010/05/24
- bug#6131: [PATCH]: fiemap support for efficient sparse file copy, jeff.liu, 2010/05/24
- bug#6131: [PATCH]: fiemap support for efficient sparse file copy, Jim Meyering, 2010/05/25
- bug#6131: [PATCH]: fiemap support for efficient sparse file copy, jeff.liu, 2010/05/25
- bug#6131: [PATCH]: fiemap support for efficient sparse file copy, jeff.liu, 2010/05/21
- bug#6131: [PATCH]: fiemap support for efficient sparse file copy, Jim Meyering, 2010/05/27
- bug#6131: [PATCH]: fiemap support for efficient sparse file copy, jeff.liu, 2010/05/27