[libvirt] [PATCH 00/16] snapshot refactoring (incremental backup saga)

John Ferlan jferlan at redhat.com
Fri Mar 22 10:50:32 UTC 2019



On 3/22/19 4:46 AM, Andrea Bolognani wrote:
> On Wed, 2019-03-20 at 00:40 -0500, Eric Blake wrote:
>> A couple of these have seen the list before, but most of them are
>> new. The bulk of this series is about refactoring snapshot_conf.c into
>> smaller pieces that I can then reuse for implementing checkpoints,
>> without having to open-code the hierarchy algorithms a second time
>> (one of John's complaints against my v4 incremental backup series).
>>
>> I suspect that src/vz/ builds may break on one or more of these
>> patches; I could not get a working vz build environment.
>>
>> Eric Blake (16):
>>   test: Avoid use-after-free on virDomainSnapshotDelete
>>   snapshot: Use accessors for virDomainSnapshot members
>>   snapshot: Create virDomainMoment base class
>>   vbox: Clean up some snapshot usage
>>   snapshot: Drop virDomainSnapshotDef.current
>>   snapshot: Track current snapshot in virDomainSnapshotObjList
>>   snapshot: Add accessors for updating snapshot list relations
>>   snapshot: Access snapshot def directly when needed
>>   snapshot: Refactor list filtering
>>   snapshot: Factor out virDomainMomentDef class
>>   snapshot: Switch type of virDomainSnapshotObj.def
>>   snapshot: Rename virDomainSnapshotObjPtr
>>   snapshot: Rename file for virDomainMomentObj
>>   snapshot: Move snapshot list code into generic file
>>   snapshot: Tweaks to support new bulk dumpxml/import API
>>   backup: Introduce virDomainCheckpointPtr
> 
> This causes libvirtd to crash at startup on my machine.
> 
> Have a backtrace:
> 
>   Thread 19 (Thread 0x7fffaa4e0700 (LWP 31651)):
>   #0  0x00007ffff72ecd31 in open64 () from /lib64/libc.so.6
>   #1  0x00007ffff727d3f6 in _IO_file_open () from /lib64/libc.so.6
>   #2  0x00007ffff727d5ad in __GI__IO_file_fopen () from /lib64/libc.so.6
>   #3  0x00007ffff727132d in __fopen_internal () from /lib64/libc.so.6
>   #4  0x00007ffff71199d8 in ?? () from /lib64/libudev.so.1
>   #5  0x00007ffff71146dd in ?? () from /lib64/libudev.so.1
>   #6  0x00007ffff71173ed in ?? () from /lib64/libudev.so.1
>   #7  0x00007ffff71179d9 in ?? () from /lib64/libudev.so.1
>   #8  0x00007ffff710be77 in udev_device_get_property_value () from /lib64/libudev.so.1
>   #9  0x00007fffc2e8a3ef in udevGetDeviceProperty (udev_device=udev_device at entry=0x7fff900606e0, property_key=property_key at entry=0x7fffc2ea3504 "DRIVER") at node_device/node_device_udev.c:140
>   #10 0x00007fffc2e8a459 in udevGetStringProperty (udev_device=udev_device at entry=0x7fff900606e0, property_key=property_key at entry=0x7fffc2ea3504 "DRIVER", value=0x7fff900f98d8) at node_device/node_device_udev.c:154
>   #11 0x00007fffc2e8b3ad in udevAddOneDevice (device=device at entry=0x7fff900606e0) at node_device/node_device_udev.c:1369
>   #12 0x00007fffc2e8d27e in udevProcessDeviceListEntry (list_entry=0x7fff9004f350, udev=0x7fff98120f00) at node_device/node_device_udev.c:1435
>   #13 udevEnumerateDevices (udev=0x7fff98120f00) at node_device/node_device_udev.c:1489
>   #14 nodeStateInitializeEnumerate (opaque=0x7fff98120f00) at node_device/node_device_udev.c:1798
>   #15 0x00007ffff7c5a2c2 in virThreadHelper (data=<optimized out>) at util/virthread.c:206
>   #16 0x00007ffff740d58e in start_thread () from /lib64/libpthread.so.0
>   #17 0x00007ffff72fc6a3 in clone () from /lib64/libc.so.6

Very strange - I don't recall the patches touching any of the
virnodedeviceobj* code. Is it possible to bisect to something after the
below?

Although there were changes by Nikolay right at the top of tree that
did... Can you go back to top, revert Nikolay's changes and see if that
does it?  You will need Michal's change to virDomainMomentAssignDef.

John

[...]


> 
> If I revert back to 320a1480d0dbe77ae9da08b6ce6c3ad5e2706b63 or
> delete all snapshots, then it works fine.
> 




More information about the libvir-list mailing list