I received editorial comments offline, and have not had time to implement them all yet. I need more time, so I'm extending the timer another 7 days from today.
The new time out will be 2008-07-09. I'll post a revision with those edits shortly. > 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/20080702/57cae9e4/attachment.html>
