2015-01-12 18:36 GMT+09:00 Christoph Hellwig <hch@xxxxxx>: > On Sun, Jan 11, 2015 at 10:50:02PM +0900, Akinobu Mita wrote: >> While accessing a scsi_device, the use count of the underlying LLDD module >> is incremented. The module reference is retrieved through .module field of >> struct scsi_host_template. >> >> This mapping between scsi_device and underlying LLDD module works well >> except ufs, unusual usb storage drivers, and sub drivers for esp_scsi. >> These drivers consist with core driver and actual LLDDs, and >> scsi_host_template is defined in the core driver. So the actual LLDDs can >> be unloaded even if the scsi_device is being accessed. >> >> This patch series first adds ability to adjust module reference for >> scsi host by LLDDs and then fixes actual LLDDs by adjusting module >> reference after scsi host allocation. > > Why don't we move the module into the Scsi_Host only, and use > the same macro that passes THIS_MODULE trick you are using in > the sub drivers? That seems to be a fairly common scheme in other > subsystems as well. Sure, we can take this approach. But ata drivers require more changes for it because ata drivers don't call scsi_host_alloc() directly so we need to pass THIS_MODULE to a variety of init functions() provided by libata. While looking through ata drivers, I found that libahci_platform sub-drivers and pata_of_platform driver also have module reference mismatch problem. So ata drivers need to be touched anyway. I'll update this patch series with the new approach. -- 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