nvme: switch controller refcounting to use struct device
Instead of allocating a separate struct device for the character device handle embedd it into struct nvme_ctrl and use it for the main controller refcounting. This removes double refcounting and gets us an automatic reference for the character device operations. We keep ctrl->device as a pointer for now to avoid chaning printks all over, but in the future we could look into message printing helpers that take a controller structure similar to what other subsystems do. Note the delete_ctrl operation always already has a reference (either through sysfs due this change, or because every open file on the /dev/nvme-fabrics node has a refernece) when it is entered now, so we don't need to do the unless_zero variant there. Signed-off-by:Christoph Hellwig <hch@lst.de> Reviewed-by:
Hannes Reinecke <hare@suse.com>
Showing
- drivers/nvme/host/core.c 22 additions, 21 deletionsdrivers/nvme/host/core.c
- drivers/nvme/host/fc.c 2 additions, 6 deletionsdrivers/nvme/host/fc.c
- drivers/nvme/host/nvme.h 11 additions, 1 deletiondrivers/nvme/host/nvme.h
- drivers/nvme/host/pci.c 1 addition, 1 deletiondrivers/nvme/host/pci.c
- drivers/nvme/host/rdma.c 2 additions, 3 deletionsdrivers/nvme/host/rdma.c
- drivers/nvme/target/loop.c 1 addition, 1 deletiondrivers/nvme/target/loop.c
Loading
Please register or sign in to comment