On 10/26/21 4:39 PM, Daniel P. Berrangé wrote: > On Tue, Oct 26, 2021 at 12:17:06PM +0200, Michal Privoznik wrote: >> In some cases the worker func running inside the pool may rely on >> virIdentity. While worker func could check for identity and set >> one it is not optimal - it may not have access to the identity of >> the thread creating the pool and thus would have to call >> virIdentityGetSystem(). Allow passing identity when creating the >> pool. > > I wonder if we should have an identity passed via virThreadPoolSendJob, > so whatever queues the job can preserve its identity ? I thought about this too, but the threat that's doing that doesn't have an identity set either: #0 virThreadPoolSendJob (pool=0x7f2ff010a370, priority=0, jobData=0x7f2fdc0b1f10) at ../src/util/virthreadpool.c:390 #1 0x00007f30301f5240 in qemuProcessEventSubmit (driver=0x7f2ff0022370, event=0x7f3012ffc880) at ../src/qemu/qemu_process.c:300 #2 0x00007f30301f8d13 in qemuProcessHandleSerialChanged (mon=0x7f2ff00295d0, vm=0x7f2ff0037830, devAlias=0x7f2fdc12f9e0 "channel0", connected=false, opaque=0x7f2ff0022370) at ../src/qemu/qemu_process.c:1540 #3 0x00007f30301c37f2 in qemuMonitorEmitSerialChange (mon=0x7f2ff00295d0, devAlias=0x7f2fdc12f9e0 "channel0", connected=false) at ../src/qemu/qemu_monitor.c:1373 #4 0x00007f30301d48c8 in qemuMonitorJSONHandleSerialChange (mon=0x7f2ff00295d0, data=0x7f2fdc0b2b40) at ../src/qemu/qemu_monitor_json.c:1145 #5 0x00007f30301d1725 in qemuMonitorJSONIOProcessEvent (mon=0x7f2ff00295d0, obj=0x7f2fdc0b2770) at ../src/qemu/qemu_monitor_json.c:208 #6 0x00007f30301d1933 in qemuMonitorJSONIOProcessLine (mon=0x7f2ff00295d0, line=0x7f2fdc0b4cd0 "{\"timestamp\": {\"seconds\": 1635259527, \"microseconds\": 380958}, \"event\": \"VSERPORT_CHANGE\", \"data\": {\"open\": false, \"id\": \"channel0\"}}", msg=0x0) at ../src/qemu/qemu_monitor_json.c:236 #7 0x00007f30301d1bcc in qemuMonitorJSONIOProcess (mon=0x7f2ff00295d0, data=0x7f2fdc12f590 "{\"timestamp\": {\"seconds\": 1635259527, \"microseconds\": 380958}, \"event\": \"VSERPORT_CHANGE\", \"data\": {\"open\": false, \"id\": \"channel0\"}}\r\n", len=135, msg=0x0) at ../src/qemu/qemu_monitor_json.c:274 #8 0x00007f30301c0400 in qemuMonitorIOProcess (mon=0x7f2ff00295d0) at ../src/qemu/qemu_monitor.c:347 #9 0x00007f30301c0c80 in qemuMonitorIO (socket=0x7f2ff0017280, cond=0, opaque=0x7f2ff00295d0) at ../src/qemu/qemu_monitor.c:573 #10 0x00007f3036ba8c77 in socket_source_dispatch () at /usr/lib64/libgio-2.0.so.0 #11 0x00007f3036d8b9d0 in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0 #12 0x00007f3036d8bd78 in g_main_context_iterate.constprop () at /usr/lib64/libglib-2.0.so.0 #13 0x00007f3036d8c06b in g_main_loop_run () at /usr/lib64/libglib-2.0.so.0 #14 0x00007f3036f81d7b in virEventThreadWorker (opaque=0x7f2ff00b10c0) at ../src/util/vireventthread.c:124 #15 0x00007f3036db52bd in g_thread_proxy () at /usr/lib64/libglib-2.0.so.0 #16 0x00007f3036235e3e in start_thread () at /lib64/libpthread.so.0 #17 0x00007f30369ffd6f in clone () at /lib64/libc.so.6 virThreadPoolSendJob 19 $ call virIdentityGetCurrent() $1 = 0x0 Michal