102b636c6Sjdunham /*
202b636c6Sjdunham  * CDDL HEADER START
302b636c6Sjdunham  *
402b636c6Sjdunham  * The contents of this file are subject to the terms of the
502b636c6Sjdunham  * Common Development and Distribution License (the "License").
602b636c6Sjdunham  * You may not use this file except in compliance with the License.
702b636c6Sjdunham  *
802b636c6Sjdunham  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
902b636c6Sjdunham  * or http://www.opensolaris.org/os/licensing.
1002b636c6Sjdunham  * See the License for the specific language governing permissions
1102b636c6Sjdunham  * and limitations under the License.
1202b636c6Sjdunham  *
1302b636c6Sjdunham  * When distributing Covered Code, include this CDDL HEADER in each
1402b636c6Sjdunham  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1502b636c6Sjdunham  * If applicable, add the following below this CDDL HEADER, with the
1602b636c6Sjdunham  * fields enclosed by brackets "[]" replaced with your own identifying
1702b636c6Sjdunham  * information: Portions Copyright [yyyy] [name of copyright owner]
1802b636c6Sjdunham  *
1902b636c6Sjdunham  * CDDL HEADER END
2002b636c6Sjdunham  */
2102b636c6Sjdunham /*
2202b636c6Sjdunham  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
2302b636c6Sjdunham  * Use is subject to license terms.
2402b636c6Sjdunham  */
2502b636c6Sjdunham 
2602b636c6Sjdunham #ifndef	_SYS_SCSI_GENERIC_PERSIST_H
2702b636c6Sjdunham #define	_SYS_SCSI_GENERIC_PERSIST_H
2802b636c6Sjdunham 
2902b636c6Sjdunham #pragma ident	"%Z%%M%	%I%	%E% SMI"
3002b636c6Sjdunham 
3102b636c6Sjdunham #ifdef	__cplusplus
3202b636c6Sjdunham extern "C" {
3302b636c6Sjdunham #endif
3402b636c6Sjdunham 
3502b636c6Sjdunham /*
3602b636c6Sjdunham  * SCSI Persistence Data
3702b636c6Sjdunham  *
3802b636c6Sjdunham  * Format of data returned as a result of PERSISTENCE RESERVER { IN | OUT }
3902b636c6Sjdunham  */
4002b636c6Sjdunham 
4102b636c6Sjdunham /*
4202b636c6Sjdunham  * SPC-3 revision 23, Section 6.11.1, Table 102
4302b636c6Sjdunham  * Persistent Reservations
4402b636c6Sjdunham  * Persistent Reserve In service actions
4502b636c6Sjdunham  */
4602b636c6Sjdunham #define	PR_IN_READ_KEYS		0x0 /* Read all registered reservation keys */
4702b636c6Sjdunham #define	PR_IN_READ_RESERVATION	0x1 /* Reads th persistent reservations */
4802b636c6Sjdunham #define	PR_IN_REPORT_CAPABILITIES 0x2 /* Returns capability information */
4902b636c6Sjdunham #define	PR_IN_READ_FULL_STATUS	0x3 /* Reads complete information about all */
5002b636c6Sjdunham 				    /* registrations and the persistent */
5102b636c6Sjdunham 				    /* reservations, if any */
5202b636c6Sjdunham /*
5302b636c6Sjdunham  * SPC-3 revision 23, Section 6.11.3.3, Table 106
5402b636c6Sjdunham  * Persistent reservation scope codes
5502b636c6Sjdunham  */
5602b636c6Sjdunham #define	PR_LU_SCOPE		0x0	/* Persistent reservation applies to */
5702b636c6Sjdunham 					/* full logical unit */
5802b636c6Sjdunham /*
5902b636c6Sjdunham  * SPC-3 revision 23, Section 6.11.3.4, Table 107
6002b636c6Sjdunham  * Persistent Reservations
6102b636c6Sjdunham  * Persistent reservation type codes
6202b636c6Sjdunham  */
6302b636c6Sjdunham #define	PGR_TYPE_WR_EX		0x1	/* Write Exclusive */
6402b636c6Sjdunham #define	PGR_TYPE_EX_AC		0x3	/* Exclusive Access */
6502b636c6Sjdunham #define	PGR_TYPE_WR_EX_RO	0x5	/* Write Exclusive, Registrants Only */
6602b636c6Sjdunham #define	PGR_TYPE_EX_AC_RO	0x6	/* Exclusive Access, Registrants Only */
6702b636c6Sjdunham #define	PGR_TYPE_WR_EX_AR	0x7	/* Write Exclusive, All Registrants */
6802b636c6Sjdunham #define	PGR_TYPE_EX_AC_AR	0x8	/* Exclusive Access, All Registrants */
6902b636c6Sjdunham 
7002b636c6Sjdunham /*
7102b636c6Sjdunham  * Information obtained from:
7202b636c6Sjdunham  *	SPC-3, Revision 23
7302b636c6Sjdunham  *	Section 6.11.5 PERSISTENCE RESERVE IN
7402b636c6Sjdunham  *	Table 111 - full status descriptor format
7502b636c6Sjdunham  */
7602b636c6Sjdunham /* Table 289 - iSCSI Initiator Device TransportID format */
7702b636c6Sjdunham 
7802b636c6Sjdunham #define	iSCSI_PROTOCOL_ID	0x5	/* Table 262 - iSCSI Protocol ID  */
7902b636c6Sjdunham #define	WW_UID_DEVICE_NAME	0x0	/* Table 288 - iSCSI Transport IDs */
8002b636c6Sjdunham 
8102b636c6Sjdunham 
8202b636c6Sjdunham #if defined(_BIT_FIELDS_LTOH)
8302b636c6Sjdunham /*
8402b636c6Sjdunham  * Information obtained from:
8502b636c6Sjdunham  *	SPC-3, Revision 23
8602b636c6Sjdunham  *	Section 6.11.1 PERSISTENCE RESERVE IN
8702b636c6Sjdunham  *	Table 101 - PERSISTENCE RESERVE IN command
8802b636c6Sjdunham  */
8902b636c6Sjdunham typedef struct scsi_cdb_prin {
9002b636c6Sjdunham 	uint8_t			cmd;
9102b636c6Sjdunham 	uint8_t			action : 5,
9202b636c6Sjdunham 				resbits : 3;
9302b636c6Sjdunham 	uint8_t			resbytes[5];
9402b636c6Sjdunham 	uint8_t			alloc_len[2];
9502b636c6Sjdunham 	uint8_t			control;
9602b636c6Sjdunham } scsi_cdb_prin_t;
9702b636c6Sjdunham 
9802b636c6Sjdunham /*
9902b636c6Sjdunham  * Information obtained from:
10002b636c6Sjdunham  *	SPC-3, Revision 23
10102b636c6Sjdunham  *	Section 6.11.2 PERSISTENCE RESERVE IN
10202b636c6Sjdunham  *	Table 103/104/105 - parameter data for READS KEYS
10302b636c6Sjdunham  */
10402b636c6Sjdunham typedef struct scsi_prin_rsrvdesc {
10502b636c6Sjdunham 	uint8_t			reservation_key[8];
10602b636c6Sjdunham 	uint8_t			obsolete1[4];
10702b636c6Sjdunham 	uint8_t			resbytes;
10802b636c6Sjdunham 	uint8_t			type : 4,
10902b636c6Sjdunham 				scope : 4;
11002b636c6Sjdunham 	uint8_t			obsolete2[2];
11102b636c6Sjdunham } scsi_prin_rsrvdesc_t;
11202b636c6Sjdunham typedef struct scsi_prin_readrsrv {
11302b636c6Sjdunham 	uint8_t			PRgeneration[4];
11402b636c6Sjdunham 	uint8_t			add_len[4];
115*68941780Sjdunham 	union {
116*68941780Sjdunham 		uint64_t		service_key[1];
117*68941780Sjdunham 		scsi_prin_rsrvdesc_t	res_key_list[1];
118*68941780Sjdunham 	} key_list;
11902b636c6Sjdunham } scsi_prin_readrsrv_t;
12002b636c6Sjdunham 
12102b636c6Sjdunham /*
12202b636c6Sjdunham  * Information obtained from:
12302b636c6Sjdunham  *	SPC-3, Revision 23
12402b636c6Sjdunham  *	Section 6.11.4 PERSISTENCE RESERVE IN
12502b636c6Sjdunham  * 	Table 108 - parameter data for REPORT CAPABILTIES
12602b636c6Sjdunham  */
12702b636c6Sjdunham typedef struct scsi_per_res_type {
12802b636c6Sjdunham 	uint8_t			resbits1 : 1,
12902b636c6Sjdunham 				wr_ex : 1,
13002b636c6Sjdunham 				resbits2 : 1,
13102b636c6Sjdunham 				ex_ac : 1,
13202b636c6Sjdunham 				resbits3 : 1,
13302b636c6Sjdunham 				wr_ex_ro : 1,
13402b636c6Sjdunham 				ex_ac_ro : 1,
13502b636c6Sjdunham 				wr_ex_ar : 1;
13602b636c6Sjdunham 	uint8_t			ex_ac_ar : 1,
13702b636c6Sjdunham 				resbits4 : 7;
13802b636c6Sjdunham } scsi_per_res_type_t;
13902b636c6Sjdunham typedef struct scsi_prin_rpt_cap {
14002b636c6Sjdunham 	uint8_t			length[2];
14102b636c6Sjdunham 	uint8_t			ptpl_c : 1,
14202b636c6Sjdunham 				resbits1 : 1,
14302b636c6Sjdunham 				atp_c : 1,
14402b636c6Sjdunham 				sip_c : 1,
14502b636c6Sjdunham 				crh : 1,
14602b636c6Sjdunham 				resbits2 : 3;
14702b636c6Sjdunham 	uint8_t			ptpl_a : 1,
14802b636c6Sjdunham 				resbits3 : 6,
14902b636c6Sjdunham 				tmv : 1;
15002b636c6Sjdunham 	scsi_per_res_type_t	pr_type;
15102b636c6Sjdunham 	uint8_t			resbytes[2];
15202b636c6Sjdunham } scsi_prin_rpt_cap_t;
15302b636c6Sjdunham 
15402b636c6Sjdunham /*
15502b636c6Sjdunham  * Information obtained from:
15602b636c6Sjdunham  *	SPC-3, Revision 23
15702b636c6Sjdunham  *	Section 6.11.5 PERSISTENCE RESERVE IN
15802b636c6Sjdunham  * 	Table 110/111 - parameter data for READ FULL STATUS
15902b636c6Sjdunham  *	Table 281 - TransportId format
16002b636c6Sjdunham  */
16102b636c6Sjdunham typedef struct scsi_transport_id {
16202b636c6Sjdunham 	uint8_t			protocol_id : 4,
16302b636c6Sjdunham 				resbits : 2,
16402b636c6Sjdunham 				format_code : 2;
16502b636c6Sjdunham 	uint8_t			add_len[2];
16602b636c6Sjdunham 	char			iscsi_name[1];
16702b636c6Sjdunham } scsi_transport_id_t;
16802b636c6Sjdunham typedef struct scsi_prin_status_t {
16902b636c6Sjdunham 	uint8_t			reservation_key[8];
17002b636c6Sjdunham 	uint8_t			resbytes1[4];
17102b636c6Sjdunham 	uint8_t			r_holder : 1,
17202b636c6Sjdunham 				all_tg_pt : 1,
17302b636c6Sjdunham 				resbits : 6;
17402b636c6Sjdunham 	uint8_t			type : 4,
17502b636c6Sjdunham 				scope : 4;
17602b636c6Sjdunham 	uint8_t			resbytes2[4];
17702b636c6Sjdunham 	uint8_t			rel_tgt_port_id[2];
17802b636c6Sjdunham 	uint8_t			add_len[4];
17902b636c6Sjdunham 	scsi_transport_id_t	trans_id;
18002b636c6Sjdunham } scsi_prin_status_t;
18102b636c6Sjdunham typedef struct scsi_prin_full_status {
18202b636c6Sjdunham 	uint8_t			PRgeneration[4];
18302b636c6Sjdunham 	uint8_t			add_len[4];
18402b636c6Sjdunham 	scsi_prin_status_t	full_desc[1];
18502b636c6Sjdunham } scsi_prin_full_status_t;
18602b636c6Sjdunham 
18702b636c6Sjdunham /*
18802b636c6Sjdunham  * Information obtained from:
18902b636c6Sjdunham  *	SPC-3, Revision 23
19002b636c6Sjdunham  *	Section 6.12.1 PERSISTENCE RESERVE OUT
19102b636c6Sjdunham  *	Table 112 - PERSISTENCE RESERVE OUT command
19202b636c6Sjdunham  */
19302b636c6Sjdunham typedef struct scsi_cdb_prout {
19402b636c6Sjdunham 	uint8_t			cmd;
19502b636c6Sjdunham 	uint8_t			action : 5,
19602b636c6Sjdunham 				resbits : 3;
19702b636c6Sjdunham 	uint8_t			type : 4,
19802b636c6Sjdunham 				scope : 4;
19902b636c6Sjdunham 	uint8_t			resbytes[2];
20002b636c6Sjdunham 	uint8_t			param_len[4];
20102b636c6Sjdunham 	uint8_t			control;
20202b636c6Sjdunham } scsi_cdb_prout_t;
20302b636c6Sjdunham 
20402b636c6Sjdunham /*
20502b636c6Sjdunham  * Information obtained from:
20602b636c6Sjdunham  *	SPC-3, Revision 23
20702b636c6Sjdunham  *	Section 6.12.3 PERSISTENCE RESERVE OUT
20802b636c6Sjdunham  *	Table 114 - PERSISTENCE RESERVE OUT parameter list
20902b636c6Sjdunham  */
21002b636c6Sjdunham typedef struct scsi_prout_plist {
21102b636c6Sjdunham 	uint8_t			reservation_key[8];
21202b636c6Sjdunham 	uint8_t			service_key[8];
21302b636c6Sjdunham 	uint8_t			obsolete1[4];
21402b636c6Sjdunham 	uint8_t			aptpl : 1,
21502b636c6Sjdunham 				resbits1 : 1,
21602b636c6Sjdunham 				all_tg_pt : 1,
21702b636c6Sjdunham 				spec_i_pt : 1,
21802b636c6Sjdunham 				resbits2 : 4;
21902b636c6Sjdunham 	uint8_t			resbytes1;
22002b636c6Sjdunham 	uint8_t			obsolete2[2];
22102b636c6Sjdunham 	uint8_t			apd[1];
22202b636c6Sjdunham } scsi_prout_plist_t;
22302b636c6Sjdunham 
22402b636c6Sjdunham #elif defined(_BIT_FIELDS_HTOL)
22502b636c6Sjdunham /*
22602b636c6Sjdunham  * Information obtained from:
22702b636c6Sjdunham  *	SPC-3, Revision 23
22802b636c6Sjdunham  *	Section 6.11.1 PERSISTENCE RESERVE IN
22902b636c6Sjdunham  *	Table 101 - PERSISTENCE RESERVE IN command
23002b636c6Sjdunham  */
23102b636c6Sjdunham typedef struct scsi_cdb_prin {
23202b636c6Sjdunham 	uint8_t			cmd;
23302b636c6Sjdunham 	uint8_t			resbits : 3,
23402b636c6Sjdunham 				action : 5;
23502b636c6Sjdunham 	uint8_t			resbytes[5];
23602b636c6Sjdunham 	uint8_t			alloc_len[2];
23702b636c6Sjdunham 	uint8_t			control;
23802b636c6Sjdunham } scsi_cdb_prin_t;
23902b636c6Sjdunham 
24002b636c6Sjdunham /*
24102b636c6Sjdunham  * Information obtained from:
24202b636c6Sjdunham  *	SPC-3, Revision 23
24302b636c6Sjdunham  *	Section 6.11.2 PERSISTENCE RESERVE IN
24402b636c6Sjdunham  *	Table 103/104/105 - parameter data for READS KEYS
24502b636c6Sjdunham  */
24602b636c6Sjdunham typedef struct scsi_prin_rsrvdesc {
24702b636c6Sjdunham 	uint8_t			reservation_key[8];
24802b636c6Sjdunham 	uint8_t			obsolete1[4];
24902b636c6Sjdunham 	uint8_t			resbytes;
25002b636c6Sjdunham 	uint8_t			scope : 4,
25102b636c6Sjdunham 				type : 4;
252*68941780Sjdunham 	uint8_t			obsolete2[2];
25302b636c6Sjdunham } scsi_prin_rsrvdesc_t;
25402b636c6Sjdunham typedef struct scsi_prin_readrsrv {
25502b636c6Sjdunham 	uint8_t			PRgeneration[4];
25602b636c6Sjdunham 	uint8_t			add_len[4];
257*68941780Sjdunham 	union {
258*68941780Sjdunham 		uint64_t		service_key[1];
259*68941780Sjdunham 		scsi_prin_rsrvdesc_t	res_key_list[1];
260*68941780Sjdunham 	} key_list;
26102b636c6Sjdunham } scsi_prin_readrsrv_t;
26202b636c6Sjdunham 
26302b636c6Sjdunham /*
26402b636c6Sjdunham  * Information obtained from:
26502b636c6Sjdunham  *	SPC-3, Revision 23
26602b636c6Sjdunham  *	Section 6.11.4 PERSISTENCE RESERVE IN
26702b636c6Sjdunham  * 	Table 108 - parameter data for REPORT CAPABILTIES
26802b636c6Sjdunham  */
26902b636c6Sjdunham typedef struct scsi_per_res_type {
27002b636c6Sjdunham 	uint8_t			wr_ex_ar : 1,
27102b636c6Sjdunham 				ex_ac_ro : 1,
27202b636c6Sjdunham 				wr_ex_ro : 1,
27302b636c6Sjdunham 				resbits3 : 1,
27402b636c6Sjdunham 				ex_ac : 1,
27502b636c6Sjdunham 				resbits2 : 1,
27602b636c6Sjdunham 				wr_ex : 1,
27702b636c6Sjdunham 				resbits1 : 1;
27802b636c6Sjdunham 	uint8_t			resbits4 : 7,
27902b636c6Sjdunham 				ex_ac_ar : 1;
28002b636c6Sjdunham } scsi_per_res_type_t;
28102b636c6Sjdunham typedef struct scsi_prin_rpt_cap {
28202b636c6Sjdunham 	uint8_t			length[2];
28302b636c6Sjdunham 	uint8_t			resbits2 : 3,
28402b636c6Sjdunham 				crh : 1,
28502b636c6Sjdunham 				sip_c : 1,
28602b636c6Sjdunham 				atp_c : 1,
28702b636c6Sjdunham 				resbits1 : 1,
28802b636c6Sjdunham 				ptpl_c : 1;
28902b636c6Sjdunham 	uint8_t			tmv : 1,
29002b636c6Sjdunham 				resbits3 : 6,
29102b636c6Sjdunham 				ptpl_a : 1;
29202b636c6Sjdunham 	scsi_per_res_type_t	pr_type;
29302b636c6Sjdunham 	uint8_t			resbytes[2];
29402b636c6Sjdunham } scsi_prin_rpt_cap_t;
29502b636c6Sjdunham 
29602b636c6Sjdunham /*
29702b636c6Sjdunham  * Information obtained from:
29802b636c6Sjdunham  *	SPC-3, Revision 23
29902b636c6Sjdunham  *	Section 6.11.5 PERSISTENCE RESERVE IN
30002b636c6Sjdunham  * 	Table 110/111 - parameter data for READ FULL STATUS
30102b636c6Sjdunham  *	Table 281 - TransportId format
30202b636c6Sjdunham  */
30302b636c6Sjdunham typedef struct scsi_transport_id {
30402b636c6Sjdunham 	uint8_t			format_code : 2,
30502b636c6Sjdunham 				resbits : 2,
30602b636c6Sjdunham 				protocol_id : 4;
30702b636c6Sjdunham 	uint8_t			add_len[2];
30802b636c6Sjdunham 	char			iscsi_name[1];
30902b636c6Sjdunham } scsi_transport_id_t;
31002b636c6Sjdunham typedef struct scsi_prin_status_t {
31102b636c6Sjdunham 	uint8_t			reservation_key[8];
31202b636c6Sjdunham 	uint8_t			resbytes1[4];
31302b636c6Sjdunham 	uint8_t			resbits : 6,
31402b636c6Sjdunham 				all_tg_pt : 1,
31502b636c6Sjdunham 				r_holder : 1;
31602b636c6Sjdunham 	uint8_t			scope : 4,
31702b636c6Sjdunham 				type : 4;
31802b636c6Sjdunham 	uint8_t			resbytes2[4];
31902b636c6Sjdunham 	uint8_t			rel_tgt_port_id[2];
32002b636c6Sjdunham 	uint8_t			add_len[4];
32102b636c6Sjdunham 	scsi_transport_id_t	trans_id;
32202b636c6Sjdunham } scsi_prin_status_t;
32302b636c6Sjdunham typedef struct scsi_prin_full_status {
32402b636c6Sjdunham 	uint8_t			PRgeneration[4];
32502b636c6Sjdunham 	uint8_t			add_len[4];
32602b636c6Sjdunham 	scsi_prin_status_t	full_desc[1];
32702b636c6Sjdunham } scsi_prin_full_status_t;
32802b636c6Sjdunham 
32902b636c6Sjdunham /*
33002b636c6Sjdunham  * Information obtained from:
33102b636c6Sjdunham  *	SPC-3, Revision 23
33202b636c6Sjdunham  *	Section 6.12.1 PERSISTENCE RESERVE OUT
33302b636c6Sjdunham  *	Table 112 - PERSISTENCE RESERVE OUT command
33402b636c6Sjdunham  */
33502b636c6Sjdunham typedef struct scsi_cdb_prout {
33602b636c6Sjdunham 	uint8_t			cmd;
33702b636c6Sjdunham 	uint8_t			resbits : 3,
33802b636c6Sjdunham 				action : 5;
33902b636c6Sjdunham 	uint8_t			scope : 4,
34002b636c6Sjdunham 				type : 4;
34102b636c6Sjdunham 	uint8_t			resbytes[2];
34202b636c6Sjdunham 	uint8_t			param_len[4];
34302b636c6Sjdunham 	uint8_t			control;
34402b636c6Sjdunham } scsi_cdb_prout_t;
34502b636c6Sjdunham 
34602b636c6Sjdunham /*
34702b636c6Sjdunham  * Information obtained from:
34802b636c6Sjdunham  *	SPC-3, Revision 23
34902b636c6Sjdunham  *	Section 6.12.3 PERSISTENCE RESERVE OUT
35002b636c6Sjdunham  *	Table 114 - PERSISTENCE RESERVE OUT parameter list
35102b636c6Sjdunham  */
35202b636c6Sjdunham typedef struct scsi_prout_plist {
35302b636c6Sjdunham 	uint8_t			reservation_key[8];
35402b636c6Sjdunham 	uint8_t			service_key[8];
35502b636c6Sjdunham 	uint8_t			obsolete1[4];
35602b636c6Sjdunham 	uint8_t			resbits1 : 4,
35702b636c6Sjdunham 				spec_i_pt : 1,
35802b636c6Sjdunham 				all_tg_pt : 1,
35902b636c6Sjdunham 				resbits2 : 1,
36002b636c6Sjdunham 				aptpl : 1;
36102b636c6Sjdunham 	uint8_t			resbytes1;
36202b636c6Sjdunham 	uint8_t			obsolete2[2];
36302b636c6Sjdunham 	uint8_t			apd[1];
36402b636c6Sjdunham } scsi_prout_plist_t;
36502b636c6Sjdunham 
36602b636c6Sjdunham #else
36702b636c6Sjdunham #error	One of _BIT_FIELDS_LTOH or _BIT_FIELDS_HTOL must be defined
36802b636c6Sjdunham #endif	/* _BIT_FIELDS_LTOH */
36902b636c6Sjdunham 
37002b636c6Sjdunham 
37102b636c6Sjdunham /*
37202b636c6Sjdunham  * SPC-3 revision 23, Section 6.12.2, Table 113
37302b636c6Sjdunham  * Persistent Reservations
37402b636c6Sjdunham  * Persistent Reserve Out service action codes
37502b636c6Sjdunham  */
37602b636c6Sjdunham #define	PR_OUT_REGISTER		0x0	/* Register/unregister a reservation */
37702b636c6Sjdunham 					/* key with the device server */
37802b636c6Sjdunham #define	PR_OUT_RESERVE		0x1	/* Create a persistent reservation */
37902b636c6Sjdunham 					/* having a specified SCOPE & TYPE */
38002b636c6Sjdunham #define	PR_OUT_RELEASE		0x2	/* Release the selected persistent */
38102b636c6Sjdunham 					/* reservation */
38202b636c6Sjdunham #define	PR_OUT_CLEAR		0x3	/* Clears all reservation keys and */
38302b636c6Sjdunham 					/* all persistent reservations */
38402b636c6Sjdunham #define	PR_OUT_PREEMPT		0x4	/* Preempts persistent reservations */
38502b636c6Sjdunham 					/* and/or removes reservations */
38602b636c6Sjdunham #define	PR_OUT_PREEMPT_ABORT	0x5	/* Preempts persistent reservations */
38702b636c6Sjdunham 					/* and/or removes reservations, and */
38802b636c6Sjdunham 					/* aborts all tasks for all preempted */
38902b636c6Sjdunham 					/* I_T nexuses */
39002b636c6Sjdunham #define	PR_OUT_REGISTER_AND_IGNORE_EXISTING_KEY	0x06
39102b636c6Sjdunham 					/* Register a reservation key with */
39202b636c6Sjdunham 					/* the device server, or unregister a */
39302b636c6Sjdunham 					/* reservation key */
39402b636c6Sjdunham #define	PR_OUT_REGISTER_MOVE	0x7	/* Register a reservation key for */
39502b636c6Sjdunham 					/* another I_T nexus with the device */
39602b636c6Sjdunham 					/* server and move a persistent */
39702b636c6Sjdunham 					/* reservation to the I_T nexus */
39802b636c6Sjdunham 
39902b636c6Sjdunham 
40002b636c6Sjdunham #ifdef	__cplusplus
40102b636c6Sjdunham }
40202b636c6Sjdunham #endif
40302b636c6Sjdunham 
40402b636c6Sjdunham #endif	/* _SYS_SCSI_GENERIC_PERSIST_H */
405