nvme: send discovery log page change events to userspace
authorSagi Grimberg <sagi@grimberg.me>
Fri, 12 Jul 2019 18:02:10 +0000 (11:02 -0700)
committerSagi Grimberg <sagi@grimberg.me>
Thu, 12 Sep 2019 15:50:46 +0000 (08:50 -0700)
If the controller supports discovery log page change events,
we want to enable it. When we see a discovery log change event
we will send it up to userspace and expect it to handle it.

Reviewed-by: Minwoo Im <minwoo.im.dev@gmail.com>
Reviewed-by: James Smart <james.smart@broadcom.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
drivers/nvme/host/core.c

index 7d4e0c6f6d49048ab295ec4a32145a858a9eed48..81f8b1841b0e051a076855ada60c993f0f578b2e 100644 (file)
@@ -1185,7 +1185,8 @@ int nvme_set_queue_count(struct nvme_ctrl *ctrl, int *count)
 EXPORT_SYMBOL_GPL(nvme_set_queue_count);
 
 #define NVME_AEN_SUPPORTED \
-       (NVME_AEN_CFG_NS_ATTR | NVME_AEN_CFG_FW_ACT | NVME_AEN_CFG_ANA_CHANGE)
+       (NVME_AEN_CFG_NS_ATTR | NVME_AEN_CFG_FW_ACT | \
+        NVME_AEN_CFG_ANA_CHANGE | NVME_AEN_CFG_DISC_CHANGE)
 
 static void nvme_enable_aen(struct nvme_ctrl *ctrl)
 {
@@ -3768,6 +3769,9 @@ static void nvme_handle_aen_notice(struct nvme_ctrl *ctrl, u32 result)
                queue_work(nvme_wq, &ctrl->ana_work);
                break;
 #endif
+       case NVME_AER_NOTICE_DISC_CHANGED:
+               ctrl->aen_result = result;
+               break;
        default:
                dev_warn(ctrl->device, "async event result %08x\n", result);
        }