I'm not sure you really need to call out the public DDI interfaces used 
by the project.  Apart from the weird line breaks in the e-mail, the 
opinion looks good to me.

    -- Garrett

Mark Martin wrote:
>
> After conclusion of the business vote on 6/25 for PSARC 2008/097 
> "sosd: SCSI Object-based Storage Device driver", I would like to offer 
> for your review the following final opinion draft.  I'll set the timer 
> for 1 week: 2008-07-03.
>
>
>    Sun
>    Microsystems              Systems Architecture Committee
>
> _________________________________________________________________
>
>
> Subject:      sosd: SCSI Object-based Storage Device driver
>
>
>
>
> Submitted by: Mark Martin
>
> File:         PSARC/2008/097/opinion.ms <http://opinion.ms>
>
>
> Date:         March 11th, 2008.
>
>
> Committee:    Mark  Carlson  (opinion  written  by  Mark Martin)
>
>
>               (Members present:  Glenn Skinner, Garrett D'Amore,
>
>               Joseph Kowalski, Kais Belgaied)
>
>
> Product Approval Committee:
>               Solaris PAC
>
>               solaris-pac-opinion at sun.com <mailto:solaris-pac-opinion at 
> sun.com>
>
>
>
>
> 1.  Summary
>
> The project implements a new SCSI target driver (sosd) that binds
>
>
> to object-based SCSI devices conforming to the ANSI T10 OSD-2
>
> standard.  The new target driver will allow filesystems and
>
>
> applications to interact with the OSD devices using object
> semantics instead of block semantics.  This driver will be a peer
>
>
> of the existing SCSI target drivers sd, st and sgen.
>
>
>
> 2.  Decision & Precedence Information
>
>
>
> The project is approved as specified in reference [1].
>
> The project may be delivered in a patch release.
>
>
>
>
> 3.  Interfaces
>
> The project exports the following interfaces.
>
>
>                      Exported Interfaces
>
>
>     ______________________________________________________________________
>       Interface                        | Classification |   Comments
>
>
>     ___________________________________|________________|_________________
>
>
>
>     osd_setup_format_osd               |                |
>     osd_setup_create_partition         |                | These interfaces
>
>     osd_setup_remove_partition         |                | are available to
>
>
>
>
>     osd_setup_create_object            |                | kernel clients
>     osd_setup_remove_object            |                | (filesystems)
>
>     osd_setup_create_and_write         |                | through scsi_osd
>
>
>
>
>     osd_setup_create_and_write_bp      |                | module
>     osd_setup_write                    |                |
>     osd_setup_write_bp                 | CONTRACTED     |
>
>     osd_setup_read                     | CONSOLIDATION  |
>
>
>
>
>     osd_setup_read_bp                  | PRIVATE        |
>     osd_setup_append                   |                |
>     osd_setup_append_bp                |                |
>
>     osd_setup_flush                    |                |
>
>
>
>
>     osd_setup_flush_osd                |                |
>     osd_setup_clear                    |                |
>     osd_setup_punch                    |                |
>
>     osd_setup_object_structure_check   |                |
>
>
>
>
>     osd_setup_set_attr                 |                |
>     osd_setup_get_attr                 |                |
>                                        |                |
>
>     osd_add_set_page_1attr_cdb         |                |
>
>
>
>
>     osd_add_set_page_1attr_to_req      |                |
>     osd_add_get_page_attr_to_req       |                |
>     osd_add_set_list_entry_to_req      |                |
>
>     osd_add_get_list_entry_to_req      |                |
>
>
>
>
>     osd_add_capability_security_to_req |                |
>     osd_add_flags_to_req               |                |
>                                        |                |
>
>     osd_submit_req                     |                |
>
>
>
>
>                                        |                |
>     osd_get_result                     |                |
>                                        |                |
>
>     osd_free_req                       |                |
>
>
>
>
>                                        |                |
>     osd_open_by_name                   |                |
>     osd_close                          |                |
>
>                                        |                |
>
>
>
>
>     osd_get_max_dma_size               |                |
>     osd_get_api_version                |                |
>     ___________________________________|__________________________________
>
>
>
>
> The project imports the following interfaces.
>
>
>
>
>                      Imported Interfaces
>    _____________________________________________________________________
>       Interface        |   Classification   |   Comments
>
>
>    ____________________|____________________|___________________________
>
>
>
>       Solaris DDI      |                    |
>       Solaris LDI      |                    |
>     scsi_init_pkt      |                    |
>
>
>     scsi_destroy_pkt   |                    |
>     scsi_transport     |                    |
>
>
>
>     scsi_dmafree       |                    |
>     scsi_probe         |                    |
>     scsi_unprobe       |                    |
>
>
>     scsi_ifgetcap      |                    |
>     scsi_ifsetcap      |                    |
>
>
>
>     scsi_log           |                    |
>     makedevice         |                    |
>     getminor           |                    |
>
>
>     physio             | All are Committed  | Interfaces defined in 
>
>
>     bioinit            |                    |
>
>     biowait            |   interfaces       | sections 9F or 9S of
>     bioerror           |                    |
>
>
>     biodone            |                    | solaris man pages
>
>
>     biofini            |                    |
>
>     buf                |                    |
>     bp_mapout          |                    |
>
>
>     getrbuf            |                    |
>     freerbuf           |                    |
>
>
>     kmem_cache_create  |                    |
>
>     kmem_cache_alloc   |                    |
>     kmem_cache_free    |                    |
>
>
>     kmem_cache_destroy |                    |
>     kmem_zalloc        |                    |
>
>
>     kmem_free          |                    |
>
>     mod_install        |                    |
>     mod_info           |                    |
>
>
>     mod_remove         |                    |
>     mod_modname        |                    |
>
>
>     bcopy              |                    |
>
>     bzero              |                    |
>     bcmp               |                    |
>
>
>     mutex_init         |                    |
>     mutex_enter        |                    |
>
>
>     mutex_exit         |                    |
>
>     mutex_owned        |                    |
>     mutex_destroy      |                    |
>
>
>     sema_init          |                    |
>     sema_p             |                    |
>
>
>     sema_v             |                    |
>
>     sema_destroy       |                    |
>     kstat_create       |                    |
>
>
>     kstat_install      |                    |
>     kstat_named_init   |                    |
>
>
>     kstat_delete       |                    |
>
>    ____________________|____________________|____________________________
>
>
>
> The project uses the following interfaces for kernel module and driver 
> communication internally.
>
>
>
>                      Internal Interfaces
>
>    ______________________________________________________________________
>
>
>             Interface        |   Classification   |   Comments
>    __________________________|____________________|______________________
>
>
>    osd_iotask_alloc          |                    |
>
>    osd_iotask_start          |                    | These are used
>
>
>    osd_iotask_free           |       PROJECT      | internally for
>    osd_register_library      |       PRIVATE      | kernel module and
>
>
>    osd_deregister_library    |                    | driver communication
>
>
>
>    osd_add_cap_sec_to_iotask |                    |
>    __________________________|____________________|______________________
>
>
>
> 4.  Opinion
>
>
> 4.1.  Existing clients planned
>
> During inception discussion, it was noted that the ARC discourages
>
>
>
> producing APIs which do not have any clients.  The project team indicated
> that the Shared QFS will deliver as a client of this API at a later date.
>
>
> See PSARC 2007/588.
>
>
> 5.  Minority Opinion(s)
>
>
>
> None.
>
>
> 6.  Advisory Information
>
> 6.1.  Bi-directional support and atomic transactions.
>
> During inception review, the lack of support for bi-directional
>
>
> communication caused concern, especially with regard for supporting atomic
>
>
>
> transactions.  
>
> The project team acknowleges that while this is a limitation in the
> existing framework, Shared QFS does not have a requirement to support
>
>
> bi-directional commands.  Any other client that wishes to use the sosd driver
>
>
>
> must be aware of the bi-directional support limitation in SCSA.
>
> The committee would advise the project team to clearly state the
>
>
> limitation that if another client (apart from Shared QFS) wants to use this
>
>
> interface, such client may not assume bidirectional support and should know
>
> that lack of bidirectional support may have issues with atomicity of a
>
>
> 'client-initiated-split-command' to achieve the net effect of a bidirectional
>
>
> command.  The driver will _never_ split any command on behalf of the client.
>
>
> Shared/Concurrent access will have to be managed by filesystem and OSD
>
>
> target with OSD protocol support or QFS semantics and out of scope.
>
>
>
> 7.  Appendices
>
> 7.1.  Appendix A: Technical Changes Required
>
>
> None.
>
> 7.2.  Appendix B: Technical Changes Advised
>
>
> None.
>
>
> 7.3.  Appendix C: Reference Material
>
> Unless stated otherwise, path names are relative to the case
>
>
> directory PSARC/2008/097.
>
>
> 1    Onepager
>      File: onepager
>
> 2    Inception minutes
>
>      File: 20080227-2008-097-inception
>
>
> 3    Issues
>      File: issues
>
> 4    PSARC 20 Questions.
>
>
>      File: final.materials/20q
>
>
> 5    Security 
>      File: final.materials/security.txt
>
>
> 6    SCSI OSD Driver Design
>      File: final.materials/sosd_design_v3.pdf
>
>
> 7    ANSI project T10/11729-D standard
>
>
>      http://www.t10.org/ftp/t10/drafts/osd/osd2r03.pdf
>
>
>
>
> PSARC/2008/097               Copyright 2008 Sun Microsystems
>
>
>   
>


Reply via email to