]>
Commit | Line | Data |
---|---|---|
95244f99 GKH |
1 | From foo@baz Wed Dec 6 17:39:55 CET 2017 |
2 | From: Sagi Grimberg <sagi@grimberg.me> | |
3 | Date: Sun, 1 Jan 2017 13:41:56 +0200 | |
4 | Subject: nvmet: cancel fatal error and flush async work before free controller | |
5 | ||
6 | From: Sagi Grimberg <sagi@grimberg.me> | |
7 | ||
8 | ||
9 | [ Upstream commit 06406d81a2d7cfb8abcc4fa6cdfeb8e5897007c5 ] | |
10 | ||
11 | Make sure they are not running and we can free the controller | |
12 | safely. | |
13 | ||
14 | Signed-off-by: Roy Shterman <roys@lightbitslabs.com> | |
15 | Signed-off-by: Sagi Grimberg <sagi@grimberg.me> | |
16 | Reviewed-by: Christoph Hellwig <hch@lst.de> | |
17 | Signed-off-by: Sasha Levin <alexander.levin@verizon.com> | |
18 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | |
19 | --- | |
20 | drivers/nvme/target/core.c | 3 +++ | |
21 | 1 file changed, 3 insertions(+) | |
22 | ||
23 | --- a/drivers/nvme/target/core.c | |
24 | +++ b/drivers/nvme/target/core.c | |
25 | @@ -816,6 +816,9 @@ static void nvmet_ctrl_free(struct kref | |
26 | list_del(&ctrl->subsys_entry); | |
27 | mutex_unlock(&subsys->lock); | |
28 | ||
29 | + flush_work(&ctrl->async_event_work); | |
30 | + cancel_work_sync(&ctrl->fatal_err_work); | |
31 | + | |
32 | ida_simple_remove(&subsys->cntlid_ida, ctrl->cntlid); | |
33 | nvmet_subsys_put(subsys); | |
34 |