[PATCH 07/12] nvme-pci: factor out a nvme_pci_alloc_ctrl helper
Sagi Grimberg
sagi at grimberg.me
Tue Nov 8 19:03:19 PST 2022
On 11/8/22 17:02, Christoph Hellwig wrote:
> Add a helper that allocates the nvme_dev structure up to the point where
> we can call nvme_init_ctrl. This pairs with the free_ctrl method and can
> thus be used to cleanup the teardown path and make it more symmetric.
>
> Note that this now calls nvme_init_ctrl a lot earlier during probing,
> which also means the per-controller character device shows up earlier.
> Due to the controller state no commnds can be send on it, but it might
> make sense to delay the cdev registration until nvme_init_ctrl_finish.
>
> Signed-off-by: Christoph Hellwig <hch at lst.de>
> ---
> drivers/nvme/host/pci.c | 81 +++++++++++++++++++++++------------------
> 1 file changed, 46 insertions(+), 35 deletions(-)
>
> diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
> index f7dab65bf5042..e1f60b1c6918f 100644
> --- a/drivers/nvme/host/pci.c
> +++ b/drivers/nvme/host/pci.c
> @@ -2777,6 +2777,7 @@ static void nvme_free_tagset(struct nvme_dev *dev)
> dev->ctrl.tagset = NULL;
> }
>
> +/* pairs with nvme_pci_alloc_ctrl */
> static void nvme_pci_free_ctrl(struct nvme_ctrl *ctrl)
> {
> struct nvme_dev *dev = to_nvme_dev(ctrl);
> @@ -3090,19 +3091,23 @@ static void nvme_async_probe(void *data, async_cookie_t cookie)
> nvme_put_ctrl(&dev->ctrl);
> }
>
> -static int nvme_probe(struct pci_dev *pdev, const struct pci_device_id *id)
> +static struct nvme_dev *nvme_pci_alloc_ctrl(struct pci_dev *pdev,
> + const struct pci_device_id *id)
kinda weird that nvme_pci_alloc_ctrl return struct nvme_dev. Patch looks
fine though...
More information about the Linux-nvme
mailing list