[CRIU] [PATCH] test/zdtm: do not allow running with --lazy-pages on kernel without uffd

Pavel Emelyanov xemul at virtuozzo.com
Mon Aug 7 17:56:03 MSK 2017


On 07/10/2017 02:15 PM, Mike Rapoport wrote:
> On Mon, Jul 10, 2017 at 12:20:00PM +0300, Pavel Emelyanov wrote:
>> On 07/10/2017 11:48 AM, Mike Rapoport wrote:
>>> On Mon, Jul 10, 2017 at 11:32:09AM +0300, Pavel Emelyanov wrote:
>>>> On 07/09/2017 09:12 AM, Mike Rapoport wrote:
>>>>> Raise an exception for kernels that do not have userfaultfd. For the
>>>>> kernels that have userfaultfd but do not provide non-cooperative events
>>>>> (4.3 - 4.10) warn about incomplete feature.
>>>>>
>>>>> Fixes: #363
>>>>>
>>>>> Signed-off-by: Mike Rapoport <rppt at linux.vnet.ibm.com>
>>>>> ---
>>>>>  test/zdtm.py | 10 ++++++++++
>>>>>  1 file changed, 10 insertions(+)
>>>>>
>>>>> diff --git a/test/zdtm.py b/test/zdtm.py
>>>>> index 2ee76cd..e6d2701 100755
>>>>> --- a/test/zdtm.py
>>>>> +++ b/test/zdtm.py
>>>>> @@ -1767,6 +1767,16 @@ def run_tests(opts):
>>>>>  		if subprocess.Popen(["ip", "netns", "exec", "zdtm_netns", "ip", "link", "set", "up", "dev", "lo"]).wait():
>>>>>  			raise Exception("ip link set up dev lo")
>>>>>  
>>>>> +	if opts['lazy_pages'] or opts['remote_lazy_pages']:
>>>>> +		check = subprocess.Popen([criu_bin, "check", "--feature", "lazy_pages"], stderr = subprocess.PIPE)
>>>>
>>>> There's a helper for that:
>>>>
>>>>         if opts['pre'] or opts['snaps']:
>>>>                 if not criu.check("mem_dirty_track"):
>>>>                         print "Tracking memory is not available"
>>>>                         return
>>>>
>>>> so you can do it with
>>>>
>>>> 	if not criu.check("lazy_pages"):
>>>> 		<bail-out>
>>>
>>> It will return 1 even if uffd is present, but it still does not have
>>> non-cooperative events. For instance, in travis ;-)
>>
>> Then there should be one more feature in criu, not just lazy_pages :) Parsing
>> stdout of it will break some day soon.
> 
> Hmm, I wouldn't want criu check to report that lazy-pages-something is
> available for kernels older than 4.11...

Sure. This means, that we need criu check --feature uffd and --feature uffd-noncoop or smth
like that.

-- Pavel



More information about the CRIU mailing list