search for: cancel_work_sync

Displaying 20 results from an estimated 278 matches for "cancel_work_sync".

2014 Nov 20
2
[PATCH v3] virtio_balloon: Convert "vballoon" kthread into a workqueue
On Thu, Nov 20, 2014 at 06:47:11PM +0200, Michael S. Tsirkin wrote: > > There's cancel_work_sync() to stop the self-requeueing ones. > > What happens if queue_work runs while cancel_work_sync is in progress? > Does it fail to queue? cancel_work_sync() is guaranteed to take self-requeueing work items no matter when it's called or what's going on. External (non-self) queueing...
2014 Nov 20
2
[PATCH v3] virtio_balloon: Convert "vballoon" kthread into a workqueue
On Thu, Nov 20, 2014 at 06:47:11PM +0200, Michael S. Tsirkin wrote: > > There's cancel_work_sync() to stop the self-requeueing ones. > > What happens if queue_work runs while cancel_work_sync is in progress? > Does it fail to queue? cancel_work_sync() is guaranteed to take self-requeueing work items no matter when it's called or what's going on. External (non-self) queueing...
2014 Nov 20
4
[PATCH v3] virtio_balloon: Convert "vballoon" kthread into a workqueue
...; > > > remove_common(vb); > > > > kfree(vb); > > > > } > > > > > > Shouldn't the work item be flushed before removal is complete? > > > > In fact, flushing it won't help because it can requeue itself, right? There's cancel_work_sync() to stop the self-requeueing ones. > From that POV a dedicated WQ kept it simple. A dedicated wq doesn't do anything for that. You can't shut down a workqueue with a pending work item on it. destroy_workqueue() will try to drain the target wq, warn if it doesn't finish in certai...
2014 Nov 20
4
[PATCH v3] virtio_balloon: Convert "vballoon" kthread into a workqueue
...; > > > remove_common(vb); > > > > kfree(vb); > > > > } > > > > > > Shouldn't the work item be flushed before removal is complete? > > > > In fact, flushing it won't help because it can requeue itself, right? There's cancel_work_sync() to stop the self-requeueing ones. > From that POV a dedicated WQ kept it simple. A dedicated wq doesn't do anything for that. You can't shut down a workqueue with a pending work item on it. destroy_workqueue() will try to drain the target wq, warn if it doesn't finish in certai...
2016 Jan 02
3
[PATCH v4 2/2] virtio_balloon: Use a workqueue instead of "vballoon" kthread
...y not? > > > @@ -563,7 +534,7 @@ static void virtballoon_remove(struct virtio_device *vdev) > > > struct virtio_balloon *vb = vdev->priv; > > > > > > unregister_oom_notifier(&vb->nb); > > > - kthread_stop(vb->thread); > > > + cancel_work_sync(&vb->wq_work); > > > > OK but since job requeues itself, cancelling like this might not be enough. > > As long as there's no further external queueing, cancel_work_sync() is > guaranteed to kill a self-requeueing work item. > > Thanks. I didn't realise...
2016 Jan 02
3
[PATCH v4 2/2] virtio_balloon: Use a workqueue instead of "vballoon" kthread
...y not? > > > @@ -563,7 +534,7 @@ static void virtballoon_remove(struct virtio_device *vdev) > > > struct virtio_balloon *vb = vdev->priv; > > > > > > unregister_oom_notifier(&vb->nb); > > > - kthread_stop(vb->thread); > > > + cancel_work_sync(&vb->wq_work); > > > > OK but since job requeues itself, cancelling like this might not be enough. > > As long as there's no further external queueing, cancel_work_sync() is > guaranteed to kill a self-requeueing work item. > > Thanks. I didn't realise...
2015 Feb 28
2
[PATCH] virtio_console: avoid config access from irq
...p;portdev->config_work, &config_work_handler); INIT_WORK(&portdev->control_work, &control_work_handler); if (multiport) { @@ -2114,6 +2127,8 @@ static void virtcons_remove(struct virtio_device *vdev) /* Finish up work that's lined up */ if (use_multiport(portdev)) cancel_work_sync(&portdev->control_work); + else + cancel_work_sync(&portdev->config_work); list_for_each_entry_safe(port, port2, &portdev->ports, list) unplug_port(port); @@ -2165,6 +2180,7 @@ static int virtcons_freeze(struct virtio_device *vdev) virtqueue_disable_cb(portdev->c...
2015 Feb 28
2
[PATCH] virtio_console: avoid config access from irq
...p;portdev->config_work, &config_work_handler); INIT_WORK(&portdev->control_work, &control_work_handler); if (multiport) { @@ -2114,6 +2127,8 @@ static void virtcons_remove(struct virtio_device *vdev) /* Finish up work that's lined up */ if (use_multiport(portdev)) cancel_work_sync(&portdev->control_work); + else + cancel_work_sync(&portdev->config_work); list_for_each_entry_safe(port, port2, &portdev->ports, list) unplug_port(port); @@ -2165,6 +2180,7 @@ static int virtcons_freeze(struct virtio_device *vdev) virtqueue_disable_cb(portdev->c...
2012 Mar 16
2
qemu-kvm for Centos 5 x86
...rnel/x86/built-in.o CC [M] /usr/local/kvm-88/kvm/kernel/x86/svm.o In file included from /usr/local/kvm-88/kvm/kernel/x86/external-module-compat.h:16, from <command line>:1: /usr/local/kvm-88/kvm/kernel/x86/../external-module-compat-comm.h:551: error: static declaration of ?cancel_work_sync? follows non-static declaration include/linux/workqueue.h:117: error: previous declaration of cancel_work_sync was here In file included from /usr/local/kvm-88/kvm/kernel/x86/external-module-compat.h:16, from <command line>:1: /usr/local/kvm-88/kvm/kernel/x86/../external-modu...
2014 Nov 20
1
[PATCH v3] virtio_balloon: Convert "vballoon" kthread into a workqueue
...; > > > > } > > > > > > > > > > Shouldn't the work item be flushed before removal is complete? > > Great catch! > > > > > In fact, flushing it won't help because it can requeue itself, right? > > > > There's cancel_work_sync() to stop the self-requeueing ones. > > Ah, one more problem is that remove_common(vb) calls leak_balloon() > that queues the work if not finished. We would need to add some flag > or variant that would disable the queuing when called here. > That's why Tejun suggested cancel_...
2014 Nov 20
1
[PATCH v3] virtio_balloon: Convert "vballoon" kthread into a workqueue
...; > > > > } > > > > > > > > > > Shouldn't the work item be flushed before removal is complete? > > Great catch! > > > > > In fact, flushing it won't help because it can requeue itself, right? > > > > There's cancel_work_sync() to stop the self-requeueing ones. > > Ah, one more problem is that remove_common(vb) calls leak_balloon() > that queues the work if not finished. We would need to add some flag > or variant that would disable the queuing when called here. > That's why Tejun suggested cancel_...
2016 Jan 01
2
[PATCH v4 2/2] virtio_balloon: Use a workqueue instead of "vballoon" kthread
...otify: > vdev->config->del_vqs(vdev); > out_free_vb: > @@ -563,7 +534,7 @@ static void virtballoon_remove(struct virtio_device *vdev) > struct virtio_balloon *vb = vdev->priv; > > unregister_oom_notifier(&vb->nb); > - kthread_stop(vb->thread); > + cancel_work_sync(&vb->wq_work); OK but since job requeues itself, cancelling like this might not be enough. > remove_common(vb); > kfree(vb); > } > @@ -574,10 +545,9 @@ static int virtballoon_freeze(struct virtio_device *vdev) > struct virtio_balloon *vb = vdev->priv; > >...
2016 Jan 01
2
[PATCH v4 2/2] virtio_balloon: Use a workqueue instead of "vballoon" kthread
...otify: > vdev->config->del_vqs(vdev); > out_free_vb: > @@ -563,7 +534,7 @@ static void virtballoon_remove(struct virtio_device *vdev) > struct virtio_balloon *vb = vdev->priv; > > unregister_oom_notifier(&vb->nb); > - kthread_stop(vb->thread); > + cancel_work_sync(&vb->wq_work); OK but since job requeues itself, cancelling like this might not be enough. > remove_common(vb); > kfree(vb); > } > @@ -574,10 +545,9 @@ static int virtballoon_freeze(struct virtio_device *vdev) > struct virtio_balloon *vb = vdev->priv; > >...
2013 Jan 17
2
[PATCH] virtio_console: Don't access uninitialized data.
...gt;] flush_work+0x0/0x1d7 62031c18: [<60050234>] try_to_grab_pending+0x0/0x17e 62031c38: [<6004e984>] get_work_gcwq+0x71/0x8f 62031c48: [<60050539>] __cancel_work_timer+0x5b/0x115 62031c78: [<628acc85>] unplug_port+0x0/0x191 [virtio_console] 62031c98: [<6005061c>] cancel_work_sync+0x12/0x14 62031ca8: [<628ace96>] virtcons_remove+0x80/0x15c [virtio_console] 62031ce8: [<628191de>] virtio_dev_remove+0x1e/0x7e [virtio] 62031d08: [<601cf242>] __device_release_driver+0x75/0xe4 62031d28: [<601cf2dd>] device_release_driver+0x2c/0x40 62031d48: [<601ce0...
2013 Jan 17
2
[PATCH] virtio_console: Don't access uninitialized data.
...gt;] flush_work+0x0/0x1d7 62031c18: [<60050234>] try_to_grab_pending+0x0/0x17e 62031c38: [<6004e984>] get_work_gcwq+0x71/0x8f 62031c48: [<60050539>] __cancel_work_timer+0x5b/0x115 62031c78: [<628acc85>] unplug_port+0x0/0x191 [virtio_console] 62031c98: [<6005061c>] cancel_work_sync+0x12/0x14 62031ca8: [<628ace96>] virtcons_remove+0x80/0x15c [virtio_console] 62031ce8: [<628191de>] virtio_dev_remove+0x1e/0x7e [virtio] 62031d08: [<601cf242>] __device_release_driver+0x75/0xe4 62031d28: [<601cf2dd>] device_release_driver+0x2c/0x40 62031d48: [<601ce0...
2012 Mar 13
1
[V4 PATCH] virtio-net: send gratuitous packet when needed
...vi = container_of(napi, struct virtnet_info, napi); @@ -787,6 +797,8 @@ static int virtnet_close(struct net_device *dev) /* Make sure refill_work doesn't re-enable napi! */ cancel_delayed_work_sync(&vi->refill); + if (virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_ANNOUNCE)) + cancel_work_sync(&vi->announce); napi_disable(&vi->napi); return 0; @@ -962,11 +974,23 @@ static void virtnet_update_status(struct virtnet_info *vi) return; /* Ignore unknown (future) status bits */ - v &= VIRTIO_NET_S_LINK_UP; + v &= VIRTIO_NET_S_LINK_UP | VIRTIO_NET_S_ANNOUNCE;...
2012 Mar 13
1
[V4 PATCH] virtio-net: send gratuitous packet when needed
...vi = container_of(napi, struct virtnet_info, napi); @@ -787,6 +797,8 @@ static int virtnet_close(struct net_device *dev) /* Make sure refill_work doesn't re-enable napi! */ cancel_delayed_work_sync(&vi->refill); + if (virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_ANNOUNCE)) + cancel_work_sync(&vi->announce); napi_disable(&vi->napi); return 0; @@ -962,11 +974,23 @@ static void virtnet_update_status(struct virtnet_info *vi) return; /* Ignore unknown (future) status bits */ - v &= VIRTIO_NET_S_LINK_UP; + v &= VIRTIO_NET_S_LINK_UP | VIRTIO_NET_S_ANNOUNCE;...
2016 Jan 25
2
[PATCH v5 0/2] virtio_balloon: Conversion to workqueue + parallel stats
...alarm; freezer waken the kthread and it restored the balloon later + added a spin lock to prevent updating the balloon when being removed + split the work into two; it allows to update stats even when the balloon is being resized Changes against v3: + rebased on 4.4-rc3 + call cancel_work_sync() when removing the balloon + do not queue the work from fill_balloon() and leak_balloon() because they are called also independently from the workqueue, e.g. remove_common(), virtballoon_oom_notify(). Re-queue the work from the work function when necessary. Changes against v2:...
2016 Jan 25
2
[PATCH v5 0/2] virtio_balloon: Conversion to workqueue + parallel stats
...alarm; freezer waken the kthread and it restored the balloon later + added a spin lock to prevent updating the balloon when being removed + split the work into two; it allows to update stats even when the balloon is being resized Changes against v3: + rebased on 4.4-rc3 + call cancel_work_sync() when removing the balloon + do not queue the work from fill_balloon() and leak_balloon() because they are called also independently from the workqueue, e.g. remove_common(), virtballoon_oom_notify(). Re-queue the work from the work function when necessary. Changes against v2:...
2012 Mar 28
2
[V6 PATCH] virtio-net: send gratuitous packets when needed
...announce); + netif_notify_peers(vi->dev); + virtnet_ack_link_announce(vi); +} + static int virtnet_close(struct net_device *dev) { struct virtnet_info *vi = netdev_priv(dev); /* Make sure refill_work doesn't re-enable napi! */ cancel_delayed_work_sync(&vi->refill); + cancel_work_sync(&vi->announce); napi_disable(&vi->napi); return 0; @@ -962,11 +983,17 @@ static void virtnet_update_status(struct virtnet_info *vi) return; /* Ignore unknown (future) status bits */ - v &= VIRTIO_NET_S_LINK_UP; + v &= VIRTIO_NET_S_LINK_UP | VIRTIO_NET_S_ANNOUNCE;...