diff options
author | Tejun Heo <tj@kernel.org> | 2014-03-07 10:24:49 -0500 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2014-03-07 10:24:49 -0500 |
commit | 9ca9737444f1a8602f74b85018d881e7e54b5bd1 (patch) | |
tree | 925cd29c17b2c2d5e68d1804e798f41d2301a501 /include/linux/nvme.h | |
parent | 77fa83cf7478202fac1520ca082ab8f9658d63b4 (diff) |
nvme: don't use PREPARE_WORK
PREPARE_[DELAYED_]WORK() are being phased out. They have few users
and a nasty surprise in terms of reentrancy guarantee as workqueue
considers work items to be different if they don't have the same work
function.
nvme_dev->reset_work is multiplexed with multiple work functions.
Introduce nvme_reset_workfn() which invokes nvme_dev->reset_workfn and
always use it as the work function and update the users to set the
->reset_workfn field instead of overriding the work function using
PREPARE_WORK().
It would probably be best to route this with other related updates
through the workqueue tree.
Compile tested.
Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Matthew Wilcox <willy@linux.intel.com>
Cc: linux-nvme@lists.infradead.org
Diffstat (limited to 'include/linux/nvme.h')
-rw-r--r-- | include/linux/nvme.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/nvme.h b/include/linux/nvme.h index 69ae03f6eb15..6b9aafed225f 100644 --- a/include/linux/nvme.h +++ b/include/linux/nvme.h | |||
@@ -87,6 +87,7 @@ struct nvme_dev { | |||
87 | struct list_head namespaces; | 87 | struct list_head namespaces; |
88 | struct kref kref; | 88 | struct kref kref; |
89 | struct miscdevice miscdev; | 89 | struct miscdevice miscdev; |
90 | work_func_t reset_workfn; | ||
90 | struct work_struct reset_work; | 91 | struct work_struct reset_work; |
91 | char name[12]; | 92 | char name[12]; |
92 | char serial[20]; | 93 | char serial[20]; |