* Re: [PATCH v3] libsas: move ATA bits into a separate module [not found] ` <450971D3.2040405@garzik.org> @ 2006-09-14 22:40 ` Darrick J. Wong 2006-09-14 22:49 ` Jeff Garzik 2006-09-18 19:00 ` Christoph Hellwig 0 siblings, 2 replies; 4+ messages in thread From: Darrick J. Wong @ 2006-09-14 22:40 UTC (permalink / raw) To: Jeff Garzik, linux-ide Cc: linux-scsi, Linux Kernel Mailing List, Alexis Bruemmer, Mike Anderson Jeff Garzik wrote: > I disagree completely with this approach. > > You don't need a table of hooks for the case where libata is disabled in > .config. Thus, it's only useful for the case where libsas is loaded as > a module, but libata is not. Indeed, I misunderstood what James Bottomley wanted, so I reworked the patch. It has the same functionality as before, but this module uses the module loader/symbol resolver for all the functions in libata, and allows libsas to (optionally) call into sas_ata with weak references by pushing a table of the necessary function pointers into libsas at sas_ata load time. Thus, libsas doesn't need to load libata/sas_ata unless it actually finds a SATA device. > The libsas code should directly call libata functions. If ATA support > in libsas is disabled in .config, then those functions will never be > called, thus never loaded the libata module. I certainly can (and now do) call libata functions from sas_ata. However, there are a few cases where libsas needs to call libata (ex. sas_ioctl); for those cases, I think the function pointers are still necessary because I don't want to make libsas require libata. In any case, if ATA support is disabled in .config, sata_is_dev always returns 0, so the dead-code eliminator should zap that out of libsas entirely. As usual, thank you for any feedback that you have. Link to version 3: http://sweaglesw.net/~djwong/docs/sas-ata_3.patch --D Signed-off-by: Darrick J. Wong <djwong@us.ibm.com> ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v3] libsas: move ATA bits into a separate module 2006-09-14 22:40 ` [PATCH v3] libsas: move ATA bits into a separate module Darrick J. Wong @ 2006-09-14 22:49 ` Jeff Garzik 2006-09-18 19:00 ` Christoph Hellwig 1 sibling, 0 replies; 4+ messages in thread From: Jeff Garzik @ 2006-09-14 22:49 UTC (permalink / raw) To: Darrick J. Wong Cc: linux-ide, linux-scsi, Linux Kernel Mailing List, Alexis Bruemmer, Mike Anderson, James Bottomley Darrick J. Wong wrote: > Jeff Garzik wrote: > >> I disagree completely with this approach. >> >> You don't need a table of hooks for the case where libata is disabled in >> .config. Thus, it's only useful for the case where libsas is loaded as >> a module, but libata is not. > > Indeed, I misunderstood what James Bottomley wanted, so I reworked the > patch. It has the same functionality as before, but this module uses > the module loader/symbol resolver for all the functions in libata, and > allows libsas to (optionally) call into sas_ata with weak references by > pushing a table of the necessary function pointers into libsas at > sas_ata load time. Thus, libsas doesn't need to load libata/sas_ata > unless it actually finds a SATA device. > >> The libsas code should directly call libata functions. If ATA support >> in libsas is disabled in .config, then those functions will never be >> called, thus never loaded the libata module. > > I certainly can (and now do) call libata functions from sas_ata. > However, there are a few cases where libsas needs to call libata (ex. > sas_ioctl); for those cases, I think the function pointers are still > necessary because I don't want to make libsas require libata. In any > case, if ATA support is disabled in .config, sata_is_dev always returns > 0, so the dead-code eliminator should zap that out of libsas entirely. Looks MUCH better to me, and eliminates my objection to the libata-related hooks. There remains the issue that I poke James about on IRC, namely that there is no need to emulate the SATA phy registers. libata permits a driver high level access to the ATA engine without needing SATA SCRs. Witness all the PATA drivers, which obviously do not have SCRs at all. Jeff ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v3] libsas: move ATA bits into a separate module 2006-09-14 22:40 ` [PATCH v3] libsas: move ATA bits into a separate module Darrick J. Wong 2006-09-14 22:49 ` Jeff Garzik @ 2006-09-18 19:00 ` Christoph Hellwig 2006-09-18 21:47 ` Jeff Garzik 1 sibling, 1 reply; 4+ messages in thread From: Christoph Hellwig @ 2006-09-18 19:00 UTC (permalink / raw) To: Darrick J. Wong Cc: Jeff Garzik, linux-ide, linux-scsi, Linux Kernel Mailing List, Alexis Bruemmer, Mike Anderson On Thu, Sep 14, 2006 at 03:40:55PM -0700, Darrick J. Wong wrote: > Jeff Garzik wrote: > > > I disagree completely with this approach. > > > > You don't need a table of hooks for the case where libata is disabled in > > .config. Thus, it's only useful for the case where libsas is loaded as > > a module, but libata is not. > > Indeed, I misunderstood what James Bottomley wanted, so I reworked the > patch. It has the same functionality as before, but this module uses > the module loader/symbol resolver for all the functions in libata, and > allows libsas to (optionally) call into sas_ata with weak references by > pushing a table of the necessary function pointers into libsas at > sas_ata load time. Thus, libsas doesn't need to load libata/sas_ata > unless it actually finds a SATA device. NACK again. Week references are bad. Please change it back to normal hard references so that it works like everything else in the kernel. ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v3] libsas: move ATA bits into a separate module 2006-09-18 19:00 ` Christoph Hellwig @ 2006-09-18 21:47 ` Jeff Garzik 0 siblings, 0 replies; 4+ messages in thread From: Jeff Garzik @ 2006-09-18 21:47 UTC (permalink / raw) To: Christoph Hellwig, Darrick J. Wong, Andrew Morton Cc: linux-ide, linux-scsi, Linux Kernel Mailing List, Alexis Bruemmer, Mike Anderson Christoph Hellwig wrote: > On Thu, Sep 14, 2006 at 03:40:55PM -0700, Darrick J. Wong wrote: >> Jeff Garzik wrote: >> >>> I disagree completely with this approach. >>> >>> You don't need a table of hooks for the case where libata is disabled in >>> .config. Thus, it's only useful for the case where libsas is loaded as >>> a module, but libata is not. >> Indeed, I misunderstood what James Bottomley wanted, so I reworked the >> patch. It has the same functionality as before, but this module uses >> the module loader/symbol resolver for all the functions in libata, and >> allows libsas to (optionally) call into sas_ata with weak references by >> pushing a table of the necessary function pointers into libsas at >> sas_ata load time. Thus, libsas doesn't need to load libata/sas_ata >> unless it actually finds a SATA device. > > NACK again. Week references are bad. Please change it back to normal > hard references so that it works like everything else in the kernel. I strongly agree. The kernel code will bloat, and performance will suffer, if we did weak refs and jump tables everywhere. I just don't see the overhead of loading libata, and not using it, as a huge penalty, when looking at the alternatives. Consider the common use cases: (a) normal distro usage, often servers where libata loading will be common anyway due to SATA presence on motherboard, and (b) embedded use, where ATA support can be .config'd out at compile time. Thus, the use cases where end users really will care about libata being loaded, but not used, are slim to none. Jeff ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2006-09-18 21:47 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <4508A0A2.2080605@us.ibm.com>
[not found] ` <450971D3.2040405@garzik.org>
2006-09-14 22:40 ` [PATCH v3] libsas: move ATA bits into a separate module Darrick J. Wong
2006-09-14 22:49 ` Jeff Garzik
2006-09-18 19:00 ` Christoph Hellwig
2006-09-18 21:47 ` Jeff Garzik
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).