CONTRACT ALLOWING/REQUIRING SPECIAL ARRANGEMENTS FOR INTERFACES 0. Number: PSARC/2007/284 1. This contract is between a SUPPLIER of INTERFACES and a CONSUMER of those INTERFACES, both of whom are entities within Sun Microsystems, Incorporated. SUPPLIER is zfs-team@sun.com CONSUMER is dwarf-caiman@sun.com 2. The SUPPLIER (definer and/or implementor) is identified by the following: Product or Bundle: Solaris Consolidation: ON Department or Group: Storage Software Bugster Product/Category/SubCategory: library/libdiskmgt Responsible Manager: Dave Brittle 3. The CONSUMER is identified by the following: Product or Bundle: Solaris Consolidation: Install Department or Group: Solaris Core Technologies Bugster Product/Category/SubCategory: solaris_install/dwarf Responsible Manager: Eric Ray 4. The INTERFACES are: Current libdskmgt INTERFACES used, all consolidation private: --------------------- typedef uint64_t dm_descriptor_t; typedef enum { DM_DRIVE = 0, DM_CONTROLLER, DM_MEDIA, DM_SLICE, DM_PARTITION, DM_PATH, DM_ALIAS, DM_BUS } dm_desc_type_t; typedef enum { DM_MT_UNKNOWN = 0, DM_MT_FIXED, DM_MT_FLOPPY, DM_MT_CDROM, DM_MT_ZIP, DM_MT_JAZ, DM_MT_CDR, DM_MT_CDRW, DM_MT_DVDROM, DM_MT_DVDR, DM_MT_DVDRAM, DM_MT_MO_ERASABLE, DM_MT_MO_WRITEONCE, DM_MT_AS_MO } dm_media_type_t; /* drive */ #define DM_DISK_UP 1 #define DM_DISK_DOWN 0 #define DM_LOADED "loaded" /* also in media */ #define DM_OPATH "opath" #define DM_PRODUCT_ID "product_id" #define DM_REMOVABLE "removable" /* also in media */ #define DM_STATUS "status" #define DM_VENDOR_ID "vendor_id" #define DM_CTYPE_ATA "ata" #define DM_CTYPE_SCSI "scsi" #define DM_CTYPE_FIBRE "fibre channel" #define DM_CTYPE_USB "usb" #define DM_CTYPE_UNKNOWN "unknown" /* media */ #define DM_BLOCKSIZE "blocksize" #define DM_FDISK "fdisk" #define DM_MTYPE "mtype" #define DM_NSECTORS "nsectors" /* also in partition */ #define DM_SIZE "size" /* also in slice */ /* partition */ #define DM_BOOTID "bootid" #define DM_PTYPE "ptype" #define DM_RELSECT "relsect" /* slice */ #define DM_DEVICEID "deviceid" #define DM_DEVT "devt" #define DM_INDEX "index" #define DM_START "start" #define DM_TAG "tag" #define DM_FLAG "flag" #define DM_EFI "efi" /* also on media */ #define DM_CTYPE "ctype" void dm_free_descriptors(dm_descriptor_t *desc_list); void dm_free_name(char *name); dm_descriptor_t *dm_get_descriptors(dm_desc_type_t type, int filter[], int *errp); dm_descriptor_t *dm_get_associated_descriptors(dm_descriptor_t desc, dm_desc_type_t type, int *errp); char *dm_get_name(dm_descriptor_t desc, int *errp); dm_desc_type_t dm_get_type(dm_descriptor_t desc); nvlist_t *dm_get_attributes(dm_descriptor_t desc, int *errp); void dm_init_event_queue(void (*cb)(nvlist_t *, int), int *errp); nvlist_t * dm_get_event(int *errp); 5. The ARC controlling these INTERFACES is: LSARC 6. The CASE describing (Exporting) these INTERFACES is: LSARC/2004/743 7. The following SPECIAL ARRANGEMENTS are made which modify the rules imposed by the stability levels listed in section 4 above: _N_ 7a. Although the stability level doesn't normally restrict it, SUPPLIER promises to only modify INTERFACES in an incompatible way as follows: [describe conditions, e.g. "minor release"] _N_ 7b. Although the stability level doesn't normally allow it, CONSUMER will expose INTERFACES to a PARTNER, which is external to Sun, namely: Name of Company: Name of Department or Group within Company: Responsible Manager: _Y_ 7c. Although the stability level doesn't normally allow it, CONSUMER will import INTERFACES from a separate consolidation. _Y_ 7d. If SUPPLIER decides to change (including replace or remove) any portion of the INTERFACES, SUPPLIER will notify CONSUMER of the proposed new version, no later than the application for ARC approval of the new version. If SUPPLIER and CONSUMER are contained in the same consolidation, they have the option of arranging for simultaneous conversion to the new interfaces. If this is not possible, or if they are not in the same consolidation, then SUPPLIER will either make best effort to work with CONSUMER so that CONSUMER can detect which version of INTERFACES is being supplied, or else SUPPLIER will make best effort to supply both old and new versions of INTERFACES. If SUPPLIER cannot make both versions of INTERFACES available, and SUPPLIER and CONSUMER cannot devise a method whereby CONSUMER can detect which version of INTERFACES is being supplied, and the old version of CONSUMER will not run with the new version of SUPPLIER, then either the EOL process must be followed by SUPPLIER, or else a major release of SUPPLIER will be required, or the change will not be allowed. 8. If CONSUMER requires changes in INTERFACES, SUPPLIER will make best effort to accommodate such changes, which shall then be treated in accordance with paragraph 7 above. 9. Notwithstanding paragraphs 7 and 8, a change to any portion of the INTERFACES shall be regarded as a completely new set of INTERFACES which require both ARC approval and execution of a new contract. 10. SUPPLIER and CONSUMER agree that evolution of INTERFACES shall be handled as follows: SUPPLIER will inform the CONSUMER of proposed changes to the libdiskmgt interfaces. Approval of the changes is not required except in cases where functionality of the interfaces will be removed and not replaced with new interfaces. 11. SUPPLIER and CONSUMER agree that INTERFACES will be supported as follows: Interfaces can be jointly supported by SUPPLIER and CONSUMER. 12. SUPPLIER and CONSUMER agree that INTERFACES will be documented as follows: As per LSARC case mentioned above. 13. SUPPLIER and CONSUMER agree that changes to the INTERFACES will be tested as follows: Usual consumer testing. 14. SUPPLIER and CONSUMER agree that this contract can be terminated as follows: SUPPLIER can terminate contract if, and only if, a replacement set of interfaces is provided to provide equivalent functionality. 15. This contract is not valid until "signed" via agreement from the SUPPLIER and CONSUMER, and approved by the ARC CASE referenced by this contract. E-mail agreement to the contract should be archived in the mail archive of CASE; verbal agreement to the contract should be noted in the meeting minutes. This contract remains valid until superseded or invalidated. For SUPPLIER: Dave Brittle Date: 5/23/07 For CONSUMER: Sarah Jelinek Date: 5/21/07 For ARC: Date: A copy of this contract shall be deposited in the CASE directory as "contract-" or in a "contracts" subdirectory. 16. (Not to be filled in until superseded or invalidated.) This contract was superseded or invalidated by CASE: For ARC: Date: