All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCHSET wq/for-3.15] workqueue: remove PREPARE_[DELAYED_]WORK()
@ 2014-02-20 20:44 Tejun Heo
  2014-02-20 20:44 ` [PATCH 1/9] wireless/rt2x00: don't use PREPARE_WORK in rt2800usb.c Tejun Heo
                   ` (9 more replies)
  0 siblings, 10 replies; 75+ messages in thread
From: Tejun Heo @ 2014-02-20 20:44 UTC (permalink / raw)
  To: laijs; +Cc: linux-kernel

Peter Hurley noticed that since a2c1c57be8d9 ("workqueue: consider
work function when searching for busy work items"), a work item which
gets assigned a different work function would break out of the
non-reentrancy guarantee as workqueue would consider it a different
work item.

This is fragile and extremely subtle.  PREPARE_[DELAYED_]WORK() have
never been used widely and its semantics has always been somewhat
iffy.  If the work item is known not to be on queue when
PREPARE_WORK() is called, there's no difference from using
INIT_WORK().  If the work item may be queued at the time of
PREPARE_WORK(), we can't really tell whether the old or new function
will be executed the next time.

We really don't want this level of subtlety in workqueue interface for
such marginal use cases.  The previous patches converted all existing
users away from PREPARE_[DELAYED_]WORK().  Let's remove them.

This patchset contains the following nine patches.

 0001-wireless-rt2x00-don-t-use-PREPARE_WORK-in-rt2800usb..patch
 0002-ps3-vuart-don-t-use-PREPARE_WORK.patch
 0003-floppy-don-t-use-PREPARE_-DELAYED_-WORK.patch
 0004-firewire-don-t-use-PREPARE_DELAYED_WORK.patch
 0005-usb-don-t-use-PREPARE_DELAYED_WORK.patch
 0006-nvme-don-t-use-PREPARE_WORK.patch
 0007-afs-don-t-use-PREPARE_WORK.patch
 0008-staging-fwserial-don-t-use-PREPARE_WORK.patch
 0009-workqueue-remove-PREPARE_-DELAYED_-WORK.patch

0001-0008 convert existing users.

0009 removes them.

This patchset is on top of e95003c3f9ccb ("Merge tag 'nfs-for-3.14-4'
of git://git.linux-nfs.org/projects/trondmy/linux-nfs") and also
available in the following git branch.

 git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq.git review-kill-PREPARE_WORK

diffstat follows.

 drivers/block/floppy.c                  |   42 +++++++++++++++++++++-----------
 drivers/block/nvme-core.c               |   18 +++++++++----
 drivers/firewire/core-device.c          |   22 +++++++++++-----
 drivers/firewire/sbp2.c                 |   17 +++++++++---
 drivers/net/wireless/rt2x00/rt2800usb.c |    2 -
 drivers/ps3/ps3-vuart.c                 |    4 ---
 drivers/staging/fwserial/fwserial.c     |   13 +++++++--
 drivers/staging/fwserial/fwserial.h     |    1 
 drivers/usb/core/hub.c                  |   13 +++++++--
 drivers/usb/core/hub.h                  |    1 
 fs/afs/internal.h                       |    1 
 fs/afs/rxrpc.c                          |   12 +++++++--
 include/linux/firewire.h                |    1 
 include/linux/nvme.h                    |    1 
 include/linux/workqueue.h               |   15 +----------
 15 files changed, 107 insertions(+), 56 deletions(-)

Thanks.

--
tejun


^ permalink raw reply	[flat|nested] 75+ messages in thread

end of thread, other threads:[~2014-03-07 15:27 UTC | newest]

Thread overview: 75+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-02-20 20:44 [PATCHSET wq/for-3.15] workqueue: remove PREPARE_[DELAYED_]WORK() Tejun Heo
2014-02-20 20:44 ` [PATCH 1/9] wireless/rt2x00: don't use PREPARE_WORK in rt2800usb.c Tejun Heo
2014-03-07 15:26   ` Tejun Heo
2014-02-20 20:44 ` [PATCH 2/9] ps3-vuart: don't use PREPARE_WORK Tejun Heo
2014-02-20 20:44   ` Tejun Heo
2014-02-21 23:19   ` Geoff Levand
2014-02-21 23:19     ` Geoff Levand
2014-02-20 20:44 ` [PATCH 3/9] floppy: don't use PREPARE_[DELAYED_]WORK Tejun Heo
2014-02-21  9:37   ` Jiri Kosina
2014-02-20 20:44 ` [PATCH 4/9] firewire: don't use PREPARE_DELAYED_WORK Tejun Heo
2014-02-20 20:44   ` Tejun Heo
2014-02-21  1:44   ` Peter Hurley
2014-02-21  1:59     ` Tejun Heo
2014-02-21  2:07       ` Peter Hurley
2014-02-21  2:07         ` Peter Hurley
2014-02-21  2:13         ` Tejun Heo
2014-02-21  5:13           ` Peter Hurley
2014-02-21 10:03             ` Tejun Heo
2014-02-21 12:51               ` Peter Hurley
2014-02-21 12:51                 ` Peter Hurley
2014-02-21 13:06                 ` Tejun Heo
2014-02-21 16:53                   ` Peter Hurley
2014-02-21 16:57                     ` Tejun Heo
2014-02-21 23:01                       ` Peter Hurley
2014-02-21 23:18                         ` Tejun Heo
2014-02-21 23:46                           ` Peter Hurley
2014-02-22 14:38                             ` Tejun Heo
2014-02-22 14:38                               ` Tejun Heo
2014-02-22 14:48                               ` Peter Hurley
2014-02-22 18:43                         ` James Bottomley
2014-02-22 18:48                           ` Peter Hurley
2014-02-22 18:48                             ` Peter Hurley
2014-02-22 18:52                             ` James Bottomley
2014-02-22 19:03                               ` Peter Hurley
2014-02-22 19:03                                 ` Peter Hurley
2014-02-23  1:23                                 ` memory-barriers.txt again (was Re: [PATCH 4/9] firewire: don't use PREPARE_DELAYED_WORK) Stefan Richter
2014-02-23 16:37                                   ` Paul E. McKenney
2014-02-23 16:37                                     ` Paul E. McKenney
2014-02-23 20:35                                     ` Peter Hurley
2014-02-23 23:50                                       ` Paul E. McKenney
2014-02-24  0:09                                         ` Peter Hurley
2014-02-24 16:26                                           ` Paul E. McKenney
2014-02-24 16:26                                             ` Paul E. McKenney
2014-02-24  0:32                                         ` Stefan Richter
2014-02-24 16:27                                           ` Paul E. McKenney
2014-02-23 20:05                                 ` [PATCH 4/9] firewire: don't use PREPARE_DELAYED_WORK James Bottomley
2014-02-23 22:32                                   ` Peter Hurley
2014-02-21 20:45   ` Stefan Richter
2014-02-21 20:45     ` Stefan Richter
2014-03-05 21:34     ` Stefan Richter
2014-03-07 15:18       ` Tejun Heo
2014-03-07 15:26   ` [PATCH UPDATED " Tejun Heo
2014-03-07 15:26     ` Tejun Heo
2014-02-20 20:44 ` [PATCH 5/9] usb: " Tejun Heo
2014-02-20 20:59   ` Greg Kroah-Hartman
2014-02-21 15:06     ` Alan Stern
2014-02-21 15:07       ` Tejun Heo
2014-02-22 14:59   ` [PATCH v2 " Tejun Heo
2014-02-22 15:14     ` Alan Stern
2014-02-22 15:20       ` Peter Hurley
2014-02-22 15:37       ` Tejun Heo
2014-02-22 23:03         ` Alan Stern
2014-02-23  4:29           ` Tejun Heo
2014-02-20 20:44 ` [PATCH 6/9] nvme: don't use PREPARE_WORK Tejun Heo
2014-02-20 20:44   ` Tejun Heo
2014-03-07 15:26   ` Tejun Heo
2014-03-07 15:26     ` Tejun Heo
2014-02-20 20:44 ` [PATCH 7/9] afs: " Tejun Heo
2014-03-07 15:27   ` Tejun Heo
2014-02-20 20:44 ` [PATCH 8/9] staging/fwserial: " Tejun Heo
2014-02-21 15:13   ` Peter Hurley
2014-02-20 20:44 ` [PATCH 9/9] workqueue: remove PREPARE_[DELAYED_]WORK() Tejun Heo
2014-03-07 15:27   ` Tejun Heo
2014-02-20 22:00 ` [PATCH 7/9] afs: don't use PREPARE_WORK David Howells
2014-02-20 22:46   ` Tejun Heo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.