Dan Williams
c23106d427
drivers/base: Introduce kill_device()
...
commit 00289cd876 upstream.
The libnvdimm subsystem arranges for devices to be destroyed as a result
of a sysfs operation. Since device_unregister() cannot be called from
an actively running sysfs attribute of the same device libnvdimm
arranges for device_unregister() to be performed in an out-of-line async
context.
The driver core maintains a 'dead' state for coordinating its own racing
async registration / de-registration requests. Rather than add local
'dead' state tracking infrastructure to libnvdimm device objects, export
the existing state tracking via a new kill_device() helper.
The kill_device() helper simply marks the device as dead, i.e. that it
is on its way to device_del(), or returns that the device was already
dead. This can be used in advance of calling device_unregister() for
subsystems like libnvdimm that might need to handle multiple user
threads racing to delete a device.
This refactoring does not change any behavior, but it is a pre-requisite
for follow-on fixes and therefore marked for -stable.
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: "Rafael J. Wysocki" <rafael@kernel.org >
Fixes: 4d88a97aa9 ("libnvdimm, nvdimm: dimm driver and base libnvdimm device-driver...")
Cc: <stable@vger.kernel.org >
Tested-by: Jane Chu <jane.chu@oracle.com >
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Link: https://lore.kernel.org/r/156341207332.292348.14959761496009347574.stgit@dwillia2-desk3.amr.corp.intel.com
Signed-off-by: Dan Williams <dan.j.williams@intel.com >
Signed-off-by: Sasha Levin <sashal@kernel.org >
2019-08-09 17:52:28 +02:00
..
2019-01-22 21:40:33 +01:00
2018-12-01 09:37:29 +01:00
2019-03-27 14:14:39 +09:00
2018-08-18 15:55:59 -07:00
2018-09-30 08:49:55 -07:00
2019-02-12 19:46:57 +01:00
2019-05-31 06:46:24 -07:00
2019-03-13 14:02:35 -07:00
2018-08-09 16:11:21 -04:00
2019-05-22 07:37:41 +02:00
2019-04-17 08:38:42 +02:00
2019-06-25 11:35:53 +08:00
2018-11-27 16:13:05 +01:00
2019-04-17 08:38:46 +02:00
2018-10-12 15:25:17 +01:00
2019-05-08 07:21:54 +02:00
2019-02-27 10:08:52 +01:00
2018-09-03 16:10:40 +01:00
2019-08-04 09:30:56 +02:00
2018-08-23 13:44:43 -07:00
2018-09-28 18:04:06 -07:00
2018-08-09 18:47:47 +03:00
2019-07-03 13:14:46 +02:00
2019-01-26 09:32:34 +01:00
2019-08-06 19:06:50 +02:00
2018-08-22 08:08:27 -07:00
2018-08-30 14:18:03 +01:00
2019-04-20 09:16:05 +02:00
2019-03-05 17:58:50 +01:00
2018-08-22 10:52:46 -07:00
2019-05-31 06:46:00 -07:00
2018-08-17 16:20:27 -07:00
2019-06-09 09:17:11 +02:00
2019-04-17 08:38:51 +02:00
2018-08-31 14:48:56 -06:00
2018-08-14 10:23:25 -07:00
2019-08-04 09:30:57 +02:00
2018-08-11 01:58:46 +02:00
2019-01-31 08:14:41 +01:00
2019-07-03 13:14:48 +02:00
2019-05-25 18:23:48 +02:00
2019-05-31 06:46:19 -07:00
2019-06-19 08:18:00 +02:00
2019-04-05 22:33:03 +02:00
2018-08-17 16:20:32 -07:00
2019-08-06 19:06:52 +02:00
2019-08-06 19:06:52 +02:00
2018-11-13 11:08:25 -08:00
2019-06-09 09:17:23 +02:00
2019-02-27 10:08:53 +01:00
2019-06-09 09:17:23 +02:00
2019-02-27 10:08:53 +01:00
2019-06-04 08:02:34 +02:00
2019-06-11 12:20:52 +02:00
2019-03-10 07:17:15 +01:00
2019-07-26 09:14:12 +02:00
2018-08-13 09:05:05 -07:00
2018-08-22 10:52:46 -07:00
2018-08-22 10:52:48 -07:00
2019-07-31 07:27:11 +02:00
2019-05-25 18:23:26 +02:00
2019-03-23 20:10:09 +01:00
2019-08-09 17:52:28 +02:00
2018-08-17 16:20:32 -07:00
2019-06-04 08:02:34 +02:00
2019-05-16 19:41:22 +02:00
2019-05-16 19:41:17 +02:00
2018-08-25 13:40:38 -07:00
2019-04-05 22:32:59 +02:00
2019-07-10 09:53:47 +02:00
2019-07-28 08:29:29 +02:00
2018-12-17 09:24:38 +01:00
2018-12-01 09:37:31 +01:00
2018-12-05 19:32:10 +01:00
2019-05-31 06:46:18 -07:00
2019-02-12 19:47:14 +01:00
2018-08-23 18:48:43 -07:00
2019-03-23 20:10:08 +01:00
2018-11-13 11:08:54 -08:00
2019-02-12 19:47:24 +01:00
2018-12-05 19:32:13 +01:00
2019-05-31 06:46:28 -07:00
2019-01-13 09:51:04 +01:00
2019-07-31 07:26:59 +02:00
2019-05-22 07:37:40 +02:00
2019-05-22 07:37:40 +02:00
2019-01-31 08:14:36 +01:00
2019-05-08 07:21:43 +02:00
2018-11-21 09:19:20 +01:00
2018-08-26 11:48:42 -07:00
2019-03-05 17:58:51 +01:00
2018-08-15 10:25:26 -07:00
2018-08-22 10:52:47 -07:00
2018-08-08 12:02:27 +02:00
2019-08-04 09:30:54 +02:00
2018-08-22 10:52:52 -07:00
2019-03-05 17:58:45 +01:00
2019-04-05 22:33:09 +02:00
2018-08-10 15:11:25 -04:00
2019-07-28 08:29:29 +02:00
2018-08-16 19:36:55 +02:00
2019-06-04 08:02:34 +02:00
2019-06-04 08:02:34 +02:00
2018-08-17 16:20:30 -07:00
2019-04-20 09:15:59 +02:00
2019-07-21 09:03:11 +02:00
2019-03-23 20:09:48 +01:00
2018-08-18 11:44:53 -07:00
2019-04-27 09:36:37 +02:00
2019-05-16 19:41:22 +02:00
2018-08-24 13:20:33 -07:00
2019-06-09 09:17:19 +02:00
2018-08-10 15:11:25 -04:00
2018-08-15 10:25:26 -07:00
2018-12-29 13:37:59 +01:00
2019-04-17 08:38:51 +02:00
2018-08-22 10:52:45 -07:00
2019-01-13 09:51:04 +01:00
2018-09-13 15:18:04 -10:00
2018-09-13 15:18:04 -10:00
2019-05-04 09:20:11 +02:00
2018-08-22 10:52:44 -07:00
2018-10-09 08:30:51 +02:00
2018-09-05 14:36:53 +02:00
2019-06-09 09:17:23 +02:00
2019-05-31 06:46:05 -07:00
2019-01-09 17:38:42 +01:00
2018-12-05 19:31:59 +01:00
2019-02-23 09:07:25 +01:00
2019-04-27 09:36:30 +02:00
2019-06-04 08:02:34 +02:00
2019-06-04 08:02:34 +02:00
2018-09-23 21:55:24 -07:00
2018-08-23 16:03:58 -07:00
2018-08-09 12:56:39 -04:00
2018-08-13 17:04:23 -04:00
2018-08-09 12:56:39 -04:00
2018-11-21 09:19:20 +01:00
2018-08-17 16:20:29 -07:00
2018-08-22 10:52:45 -07:00
2018-11-13 11:08:24 -08:00
2019-06-09 09:17:24 +02:00
2018-08-23 18:48:44 -07:00
2019-05-31 06:46:30 -07:00
2018-08-17 16:20:28 -07:00
2018-08-23 18:48:43 -07:00
2018-09-03 19:05:13 -07:00
2019-05-25 18:23:38 +02:00
2018-08-22 10:52:45 -07:00
2019-07-28 08:29:28 +02:00
2018-12-01 09:37:34 +01:00
2018-08-09 11:08:19 -07:00
2019-05-04 09:20:11 +02:00
2018-08-14 13:36:15 +02:00
2018-08-22 10:52:46 -07:00
2019-03-23 20:10:04 +01:00
2019-06-11 12:20:52 +02:00
2019-01-09 17:38:33 +01:00
2018-12-05 19:32:03 +01:00
2019-06-15 11:54:10 +02:00
2018-08-22 18:17:29 +02:00
2019-07-26 09:14:07 +02:00
2018-08-09 11:15:06 +01:00
2019-04-05 22:32:56 +02:00
2019-04-05 22:32:56 +02:00
2019-08-04 09:30:56 +02:00
2018-08-15 10:25:26 -07:00
2018-10-02 14:38:02 -07:00
2018-08-20 09:22:45 -07:00
2018-08-22 10:52:43 -07:00
2018-11-13 11:08:45 -08:00
2019-06-04 08:02:30 +02:00
2019-05-25 18:23:20 +02:00
2019-04-03 06:26:28 +02:00
2019-05-31 06:46:16 -07:00
2018-08-16 12:14:42 -07:00
2019-03-13 14:02:35 -07:00
2019-04-17 08:38:45 +02:00
2018-10-12 12:35:02 +02:00
2019-04-20 09:16:05 +02:00
2018-08-23 18:48:44 -07:00
2018-08-14 16:39:13 -07:00
2018-08-18 11:44:53 -07:00
2018-12-29 13:37:55 +01:00
2018-11-13 11:08:51 -08:00
2019-06-17 19:51:56 +02:00
2018-08-22 15:11:35 +02:00
2019-05-31 06:46:29 -07:00
2018-09-03 13:26:44 +02:00
2018-10-17 15:35:29 -04:00
2018-12-08 12:59:07 +01:00
2018-12-13 09:16:15 +01:00
2018-09-12 14:58:47 -07:00
2018-08-13 20:08:33 -04:00
2019-05-08 07:21:44 +02:00
2018-08-23 18:48:44 -07:00
2018-08-16 09:57:20 -07:00
2018-09-13 17:58:30 +02:00
2018-08-11 12:02:18 -07:00
2019-02-27 10:09:01 +01:00
2019-04-17 08:38:52 +02:00
2018-09-13 15:18:04 -10:00
2018-09-13 15:18:04 -10:00
2019-07-14 08:11:21 +02:00
2018-11-13 11:08:42 -08:00