scsi: cxlflash: Cache owning adapter within context
authorMatthew R. Ochs <mrochs@linux.vnet.ibm.com>
Tue, 9 Aug 2016 23:39:30 +0000 (18:39 -0500)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 19 Aug 2016 02:40:27 +0000 (22:40 -0400)
The context removal routine requires access to the owning adapter
structure to reset the context within the AFU as part of the tear down
sequence. In order to support kref adoption, the owning adapter must be
accessible from the release handler. As the kref framework only provides
the kref reference as the sole parameter, another means is needed to
derive the owning adapter.

As a remedy, the owning adapter reference is saved off within the
context during initialization.

Signed-off-by: Matthew R. Ochs <mrochs@linux.vnet.ibm.com>
Acked-by: Manoj N. Kumar <manoj@linux.vnet.ibm.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/cxlflash/superpipe.c
drivers/scsi/cxlflash/superpipe.h

index ab5c8939928b0d1603865a4320c6da050cf4df32..640c3a2641ef0b8b7dd7ecf353e3b6b4ccb95a8c 100644 (file)
@@ -804,6 +804,7 @@ static void init_context(struct ctx_info *ctxi, struct cxlflash_cfg *cfg,
        ctxi->lfd = adap_fd;
        ctxi->pid = current->tgid; /* tgid = pid */
        ctxi->ctx = ctx;
+       ctxi->cfg = cfg;
        ctxi->file = file;
        ctxi->initialized = true;
        mutex_init(&ctxi->mutex);
index 5f9a091fda95e341d02f896a6bc5799641e07832..61404f201debb3da497479ab8ba88210b48a595e 100644 (file)
@@ -107,6 +107,7 @@ struct ctx_info {
        bool err_recovery_active;
        struct mutex mutex; /* Context protection */
        struct cxl_context *ctx;
+       struct cxlflash_cfg *cfg;
        struct list_head luns;  /* LUNs attached to this context */
        const struct vm_operations_struct *cxl_mmap_vmops;
        struct file *file;