SEEK_HOLE and SEEK_DATA does not work on zfs (with test case)

Andriy Gapon avg at FreeBSD.org
Wed Apr 4 09:30:31 UTC 2012


on 04/04/2012 12:21 Attila Nagy said the following:
> On 04/04/12 10:57, Andriy Gapon wrote:
>> on 04/04/2012 11:50 Attila Nagy said the following:
>>> On 04/04/12 10:38, Andriy Gapon wrote:
>>>> on 04/04/2012 10:52 Attila Nagy said the following:
>>>>> Hi,
>>>>>
>>>>> I've started to experiment with SEEK_HOLE and SEEK_DATA in python on a recent
>>>>> FreeBSD 9-STABLE/amd64 box and it quickly became evident that the program that
>>>>> works on Solaris doesn't work on FreeBSD.
>>>>> Python itself couldn't cause this, because it correctly issues the lseek, but
>>>>> taking the C test program from here:
>>>>> https://lkml.org/lkml/2011/4/22/79
>>>>> gives the same result (failure).
>>>> Please see this PR: http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/164445
>>>> If you can't figure out a patch from its contents, then I'll try to provide it
>>>> some time later today.
>>>>
>>> I will try it, but the e-mail above the patch is somewhat scary...
>> Sorry, I could not understand what you mean.
>>
> "The patch does the copy of the offset passed from the application
> correctly, and allows lseek(2) with SEEK_DATA/SEEK_HOLE to be used on
> ZFS, but it is not a solution. I couldn't see a problem in the
> assembler of the copyin and copyout functions in
> sys/amd64/amd64/support.S, but I might be wrong, I'm no assembler
> expert."
> 
> This is scary. :)

Did you see my comment in the PR trail?  It explains why that approach is not
scary but entirely correct.
Due to some mailing issues it is re-ordered with the patch.

-- 
Andriy Gapon


More information about the freebsd-fs mailing list