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>