[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] copy: adjust fiemap handling of sparse files
From: |
Jim Meyering |
Subject: |
Re: [PATCH] copy: adjust fiemap handling of sparse files |
Date: |
Wed, 09 Feb 2011 13:10:18 +0100 |
Pádraig Brady wrote:
> I was looking at adding fallocate() to copy.c,
> now that the fiemap code has gone in and
> I noticed that if there was allocated space
> at the end of a file, not accounted for
> in st_size, then any holes would not be detected.
Good point.
> In what other cases does the sparse detection
> heuristic fail BTW?
There are probably a few, but none that I know of.
> Anwyay, we don't need the heuristic with fiemap,
> so I changed accordingly in the attached.
...
> Subject: [PATCH] copy: adjust fiemap handling of sparse files
>
> Don't depend on heuristics to detect sparse files
> if fiemap is available. Also don't introduce new
> holes unless --sparse=always has been specified.
Good change, in principle.
> * src/copy.c (extent_copy): Pass the user specified
> sparse mode, and handle as described above.
> Also a redundant lseek has been suppressed when
> there is no hole between two extents.
Could that be done in two separate patches?
I haven't looked closely, but when I tested it on x86_64 (F14),
it failed like this:
FAIL: cp/sparse-to-pipe (exit: 1)
=================================
...
+ truncate -s1M sparse
+ timeout 10 cat pipe
+ cp sparse pipe
cp: failed to extend `pipe': Invalid argument
+ fail=1
+ cmp sparse copy
cmp: EOF on copy
+ fail=1
Sounds like the change provokes an lseek on the output FD,
even though it's a pipe.