Re: [PATCH 1/5] bfa: Brocade BFA FC SCSI driver (bfad)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Jing Huang wrote:
+
+	im_port->shost->hostdata[0] = (unsigned long)im_port;


I think I asked about this before. Why do you just not allocate the
bfad
or im_port in the hostdata? What is the struct hierarchy? Do you have
one bfad for the entire HBA/pci_device then have a im_port for each
port
on the hba?


Thanks for review the code again. Yes, we have one bfad for each HBA
port/pci device, and one im_port (im stands for initiator mode) for each
scsi_host/vport. We can certainly allocate im_port in scsi_host_alloc()
as you suggest, but currently we allocate all possible fc4 port
(initiator/tgt/ipfc) in one function, and it is just more convenient to
do it in one place.

I think the refcounting is off though. For example in the shutdown case, if someone is accessing a scsi host sysfs attr, bfad_im_scsi_host_free would release the drivers refcounts on the scsi_host and free the im_port, but the sysfs code could still be accessing the im port. The shost would still be there because the sysfs code took a refcount on kobject/kref, but the im port is now gone. When you allocate the port struct in the hostdata with scsi_host_alloc this type of issue is handled for you.
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux