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


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



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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://mail.opensolaris.org/pipermail/opensolaris-arc/attachments/20080625/f69e1059/attachment.html>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: psarc_2008_097_draft_opinion.txt
URL: 
<http://mail.opensolaris.org/pipermail/opensolaris-arc/attachments/20080625/f69e1059/attachment.txt>

Reply via email to