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

Attila Nagy bra at fsn.hu
Wed Apr 4 12:42:04 UTC 2012


On 04/04/12 11:30, Andriy Gapon wrote:
> 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.
>
No, thanks for the clarification. I've tried that patch and the C test 
program runs fine.
Will you commit this?

And I think a regression test case would also be good. :)

Thanks,


More information about the freebsd-fs mailing list