On Mon, Sep 11, 2017 at 09:21:49PM -0700, Anish M Jhaveri wrote:
> struct nvme_ctrl_ops {
> @@ -277,6 +307,7 @@ bool nvme_change_ctrl_state(struct nvme_ctrl *ctrl,
> int nvme_disable_ctrl(struct nvme_ctrl *ctrl, u64 cap);
> int nvme_enable_ctrl(struct nvme_ctrl *ctrl, u64 cap);
> int nvme_shutdown_ctrl(struct nvme_ctrl *ctrl);
> +struct nvme_ctrl *nvme_init_mpath_ctrl(struct nvme_ctrl *ctrl);
> int nvme_init_ctrl(struct nvme_ctrl *ctrl, struct device *dev,
> const struct nvme_ctrl_ops *ops, unsigned long quirks);
> void nvme_uninit_ctrl(struct nvme_ctrl *ctrl);
> @@ -287,6 +318,9 @@ int nvme_init_identify(struct nvme_ctrl *ctrl);
>
> void nvme_queue_scan(struct nvme_ctrl *ctrl);
> void nvme_remove_namespaces(struct nvme_ctrl *ctrl);
> +void nvme_trigger_failover(struct nvme_ctrl *ctrl);
> +int nvme_set_ns_active(struct nvme_ns *standby_ns, struct nvme_ns *mpath_ns,
> + int retry_cnt);
>
> int nvme_sec_submit(void *data, u16 spsp, u8 secp, void *buffer, size_t len,
> bool send);
> @@ -325,6 +359,7 @@ int nvme_set_queue_count(struct nvme_ctrl *ctrl, int
> *count);
> void nvme_start_keep_alive(struct nvme_ctrl *ctrl);
> void nvme_stop_keep_alive(struct nvme_ctrl *ctrl);
> int nvme_reset_ctrl(struct nvme_ctrl *ctrl);
> +void nvme_mpath_ns_remove(struct nvme_ns *ns);
>
> #ifdef CONFIG_NVM
> int nvme_nvm_ns_supported(struct nvme_ns *ns, struct nvme_id_ns *id);
I find this patch series confusing to review. You declare these failover
functions in patch 1, use them in patch 2, but they're not defined until
patch 7.