diff options
author | Amit Engel <amit.engel@dell.com> | 2020-09-16 20:47:20 +0300 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2020-09-27 10:14:19 +0300 |
commit | 4e683c48db018e72e81e1e0d12a5020d29be561a (patch) | |
tree | 45fd33a1f9b194a8b47cb293b0f8dbec9bffa880 /drivers/nvme/target/admin-cmd.c | |
parent | f7790e5de92a3b88e74704a6cb2276c09c32f511 (diff) | |
download | linux-4e683c48db018e72e81e1e0d12a5020d29be561a.tar.xz |
nvmet: handle keep-alive timer when kato is modified by a set features cmd
A user may modify the kato by a set features cmd. To properly deal
with races or a kato value of 0 (no keep alive enabled) change
nvmet_set_feat_kato to first disable the timer, then set the value
and then re-enable the timer.
Signed-off-by: Amit Engel <amit.engel@dell.com>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'drivers/nvme/target/admin-cmd.c')
-rw-r--r-- | drivers/nvme/target/admin-cmd.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/nvme/target/admin-cmd.c b/drivers/nvme/target/admin-cmd.c index e9fe91786bbb..dca34489a1dc 100644 --- a/drivers/nvme/target/admin-cmd.c +++ b/drivers/nvme/target/admin-cmd.c @@ -727,7 +727,9 @@ u16 nvmet_set_feat_kato(struct nvmet_req *req) { u32 val32 = le32_to_cpu(req->cmd->common.cdw11); + nvmet_stop_keep_alive_timer(req->sq->ctrl); req->sq->ctrl->kato = DIV_ROUND_UP(val32, 1000); + nvmet_start_keep_alive_timer(req->sq->ctrl); nvmet_set_result(req, req->sq->ctrl->kato); |