osd_attributes.h 15 KB
Newer Older
1 2 3
#ifndef __OSD_ATTRIBUTES_H__
#define __OSD_ATTRIBUTES_H__

4
#include <scsi/osd_protocol.h>
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

/*
 * Contains types and constants that define attribute pages and attribute
 * numbers and their data types.
 */

#define ATTR_SET(pg, id, l, ptr) \
	{ .attr_page = pg, .attr_id = id, .len = l, .val_ptr = ptr }

#define ATTR_DEF(pg, id, l) ATTR_SET(pg, id, l, NULL)

/* osd-r10 4.7.3 Attributes pages */
enum {
	OSD_APAGE_OBJECT_FIRST		= 0x0,
	OSD_APAGE_OBJECT_DIRECTORY	= 0,
	OSD_APAGE_OBJECT_INFORMATION	= 1,
	OSD_APAGE_OBJECT_QUOTAS		= 2,
	OSD_APAGE_OBJECT_TIMESTAMP	= 3,
	OSD_APAGE_OBJECT_COLLECTIONS	= 4,
	OSD_APAGE_OBJECT_SECURITY	= 5,
	OSD_APAGE_OBJECT_LAST		= 0x2fffffff,

	OSD_APAGE_PARTITION_FIRST	= 0x30000000,
	OSD_APAGE_PARTITION_DIRECTORY	= OSD_APAGE_PARTITION_FIRST + 0,
	OSD_APAGE_PARTITION_INFORMATION = OSD_APAGE_PARTITION_FIRST + 1,
	OSD_APAGE_PARTITION_QUOTAS	= OSD_APAGE_PARTITION_FIRST + 2,
	OSD_APAGE_PARTITION_TIMESTAMP	= OSD_APAGE_PARTITION_FIRST + 3,
32
	OSD_APAGE_PARTITION_ATTR_ACCESS = OSD_APAGE_PARTITION_FIRST + 4,
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
	OSD_APAGE_PARTITION_SECURITY	= OSD_APAGE_PARTITION_FIRST + 5,
	OSD_APAGE_PARTITION_LAST	= 0x5FFFFFFF,

	OSD_APAGE_COLLECTION_FIRST	= 0x60000000,
	OSD_APAGE_COLLECTION_DIRECTORY	= OSD_APAGE_COLLECTION_FIRST + 0,
	OSD_APAGE_COLLECTION_INFORMATION = OSD_APAGE_COLLECTION_FIRST + 1,
	OSD_APAGE_COLLECTION_TIMESTAMP	= OSD_APAGE_COLLECTION_FIRST + 3,
	OSD_APAGE_COLLECTION_SECURITY	= OSD_APAGE_COLLECTION_FIRST + 5,
	OSD_APAGE_COLLECTION_LAST	= 0x8FFFFFFF,

	OSD_APAGE_ROOT_FIRST		= 0x90000000,
	OSD_APAGE_ROOT_DIRECTORY	= OSD_APAGE_ROOT_FIRST + 0,
	OSD_APAGE_ROOT_INFORMATION	= OSD_APAGE_ROOT_FIRST + 1,
	OSD_APAGE_ROOT_QUOTAS		= OSD_APAGE_ROOT_FIRST + 2,
	OSD_APAGE_ROOT_TIMESTAMP	= OSD_APAGE_ROOT_FIRST + 3,
	OSD_APAGE_ROOT_SECURITY		= OSD_APAGE_ROOT_FIRST + 5,
	OSD_APAGE_ROOT_LAST		= 0xBFFFFFFF,

	OSD_APAGE_RESERVED_TYPE_FIRST	= 0xC0000000,
	OSD_APAGE_RESERVED_TYPE_LAST	= 0xEFFFFFFF,

	OSD_APAGE_COMMON_FIRST		= 0xF0000000,
55 56 57
	OSD_APAGE_COMMON_LAST		= 0xFFFFFFFD,

	OSD_APAGE_CURRENT_COMMAND	= 0xFFFFFFFE,
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111

	OSD_APAGE_REQUEST_ALL		= 0xFFFFFFFF,
};

/* subcategories of attr pages within each range above */
enum {
	OSD_APAGE_STD_FIRST		= 0x0,
	OSD_APAGE_STD_DIRECTORY		= 0,
	OSD_APAGE_STD_INFORMATION	= 1,
	OSD_APAGE_STD_QUOTAS		= 2,
	OSD_APAGE_STD_TIMESTAMP		= 3,
	OSD_APAGE_STD_COLLECTIONS	= 4,
	OSD_APAGE_STD_POLICY_SECURITY	= 5,
	OSD_APAGE_STD_LAST		= 0x0000007F,

	OSD_APAGE_RESERVED_FIRST	= 0x00000080,
	OSD_APAGE_RESERVED_LAST		= 0x00007FFF,

	OSD_APAGE_OTHER_STD_FIRST	= 0x00008000,
	OSD_APAGE_OTHER_STD_LAST	= 0x0000EFFF,

	OSD_APAGE_PUBLIC_FIRST		= 0x0000F000,
	OSD_APAGE_PUBLIC_LAST		= 0x0000FFFF,

	OSD_APAGE_APP_DEFINED_FIRST	= 0x00010000,
	OSD_APAGE_APP_DEFINED_LAST	= 0x1FFFFFFF,

	OSD_APAGE_VENDOR_SPECIFIC_FIRST	= 0x20000000,
	OSD_APAGE_VENDOR_SPECIFIC_LAST	= 0x2FFFFFFF,
};

enum {
	OSD_ATTR_PAGE_IDENTIFICATION = 0, /* in all pages 40 bytes */
};

struct page_identification {
	u8 vendor_identification[8];
	u8 page_identification[32];
}  __packed;

struct osd_attr_page_header {
	__be32 page_number;
	__be32 page_length;
} __packed;

/* 7.1.2.8 Root Information attributes page (OSD_APAGE_ROOT_INFORMATION) */
enum {
	OSD_ATTR_RI_OSD_SYSTEM_ID            = 0x3,   /* 20       */
	OSD_ATTR_RI_VENDOR_IDENTIFICATION    = 0x4,   /* 8        */
	OSD_ATTR_RI_PRODUCT_IDENTIFICATION   = 0x5,   /* 16       */
	OSD_ATTR_RI_PRODUCT_MODEL            = 0x6,   /* 32       */
	OSD_ATTR_RI_PRODUCT_REVISION_LEVEL   = 0x7,   /* 4        */
	OSD_ATTR_RI_PRODUCT_SERIAL_NUMBER    = 0x8,   /* variable */
	OSD_ATTR_RI_OSD_NAME                 = 0x9,   /* variable */
112
	OSD_ATTR_RI_MAX_CDB_CONTINUATION_LEN = 0xA,   /* 4        */
113 114 115 116
	OSD_ATTR_RI_TOTAL_CAPACITY           = 0x80,  /* 8        */
	OSD_ATTR_RI_USED_CAPACITY            = 0x81,  /* 8        */
	OSD_ATTR_RI_NUMBER_OF_PARTITIONS     = 0xC0,  /* 8        */
	OSD_ATTR_RI_CLOCK                    = 0x100, /* 6        */
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
	OARI_DEFAULT_ISOLATION_METHOD        = 0X110, /* 1        */
	OARI_SUPPORTED_ISOLATION_METHODS     = 0X111, /* 32       */

	OARI_DATA_ATOMICITY_GUARANTEE                   = 0X120,   /* 8       */
	OARI_DATA_ATOMICITY_ALIGNMENT                   = 0X121,   /* 8       */
	OARI_ATTRIBUTES_ATOMICITY_GUARANTEE             = 0X122,   /* 8       */
	OARI_DATA_ATTRIBUTES_ATOMICITY_MULTIPLIER       = 0X123,   /* 1       */

	OARI_MAXIMUM_SNAPSHOTS_COUNT                    = 0X1C1,    /* 0 or 4 */
	OARI_MAXIMUM_CLONES_COUNT                       = 0X1C2,    /* 0 or 4 */
	OARI_MAXIMUM_BRANCH_DEPTH                       = 0X1CC,    /* 0 or 4 */
	OARI_SUPPORTED_OBJECT_DUPLICATION_METHOD_FIRST  = 0X200,    /* 0 or 4 */
	OARI_SUPPORTED_OBJECT_DUPLICATION_METHOD_LAST   = 0X2ff,    /* 0 or 4 */
	OARI_SUPPORTED_TIME_OF_DUPLICATION_METHOD_FIRST = 0X300,    /* 0 or 4 */
	OARI_SUPPORTED_TIME_OF_DUPLICATION_METHOD_LAST  = 0X30F,    /* 0 or 4 */
	OARI_SUPPORT_FOR_DUPLICATED_OBJECT_FREEZING     = 0X310,    /* 0 or 4 */
	OARI_SUPPORT_FOR_SNAPSHOT_REFRESHING            = 0X311,    /* 0 or 1 */
	OARI_SUPPORTED_CDB_CONTINUATION_DESC_TYPE_FIRST = 0X7000001,/* 0 or 4 */
	OARI_SUPPORTED_CDB_CONTINUATION_DESC_TYPE_LAST  = 0X700FFFF,/* 0 or 4 */
136 137 138 139 140 141 142 143 144 145
};
/* Root_Information_attributes_page does not have a get_page structure */

/* 7.1.2.9 Partition Information attributes page
 * (OSD_APAGE_PARTITION_INFORMATION)
 */
enum {
	OSD_ATTR_PI_PARTITION_ID            = 0x1,     /* 8        */
	OSD_ATTR_PI_USERNAME                = 0x9,     /* variable */
	OSD_ATTR_PI_USED_CAPACITY           = 0x81,    /* 8        */
146
	OSD_ATTR_PI_USED_CAPACITY_INCREMENT = 0x84,    /* 0 or 8   */
147
	OSD_ATTR_PI_NUMBER_OF_OBJECTS       = 0xC1,    /* 8        */
148 149 150 151 152 153 154

	OSD_ATTR_PI_ACTUAL_DATA_SPACE                      = 0xD1, /* 0 or 8 */
	OSD_ATTR_PI_RESERVED_DATA_SPACE                    = 0xD2, /* 0 or 8 */
	OSD_ATTR_PI_DEFAULT_SNAPSHOT_DUPLICATION_METHOD    = 0x200,/* 0 or 4 */
	OSD_ATTR_PI_DEFAULT_CLONE_DUPLICATION_METHOD       = 0x201,/* 0 or 4 */
	OSD_ATTR_PI_DEFAULT_SP_TIME_OF_DUPLICATION         = 0x300,/* 0 or 4 */
	OSD_ATTR_PI_DEFAULT_CLONE_TIME_OF_DUPLICATION      = 0x301,/* 0 or 4 */
155 156 157 158 159 160 161 162 163 164
};
/* Partition Information attributes page does not have a get_page structure */

/* 7.1.2.10 Collection Information attributes page
 * (OSD_APAGE_COLLECTION_INFORMATION)
 */
enum {
	OSD_ATTR_CI_PARTITION_ID           = 0x1,       /* 8        */
	OSD_ATTR_CI_COLLECTION_OBJECT_ID   = 0x2,       /* 8        */
	OSD_ATTR_CI_USERNAME               = 0x9,       /* variable */
165
	OSD_ATTR_CI_COLLECTION_TYPE        = 0xA,       /* 1        */
166 167 168 169 170 171 172 173 174 175 176 177 178
	OSD_ATTR_CI_USED_CAPACITY          = 0x81,      /* 8        */
};
/* Collection Information attributes page does not have a get_page structure */

/* 7.1.2.11 User Object Information attributes page
 * (OSD_APAGE_OBJECT_INFORMATION)
 */
enum {
	OSD_ATTR_OI_PARTITION_ID         = 0x1,       /* 8        */
	OSD_ATTR_OI_OBJECT_ID            = 0x2,       /* 8        */
	OSD_ATTR_OI_USERNAME             = 0x9,       /* variable */
	OSD_ATTR_OI_USED_CAPACITY        = 0x81,      /* 8        */
	OSD_ATTR_OI_LOGICAL_LENGTH       = 0x82,      /* 8        */
179 180
	SD_ATTR_OI_ACTUAL_DATA_SPACE     = 0XD1,      /* 0 OR 8   */
	SD_ATTR_OI_RESERVED_DATA_SPACE   = 0XD2,      /* 0 OR 8   */
181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284
};
/* Object Information attributes page does not have a get_page structure */

/* 7.1.2.12 Root Quotas attributes page (OSD_APAGE_ROOT_QUOTAS) */
enum {
	OSD_ATTR_RQ_DEFAULT_MAXIMUM_USER_OBJECT_LENGTH     = 0x1,      /* 8  */
	OSD_ATTR_RQ_PARTITION_CAPACITY_QUOTA               = 0x10001,  /* 8  */
	OSD_ATTR_RQ_PARTITION_OBJECT_COUNT                 = 0x10002,  /* 8  */
	OSD_ATTR_RQ_PARTITION_COLLECTIONS_PER_USER_OBJECT  = 0x10081,  /* 4  */
	OSD_ATTR_RQ_PARTITION_COUNT                        = 0x20002,  /* 8  */
};

struct Root_Quotas_attributes_page {
	struct osd_attr_page_header hdr; /* id=R+2, size=0x24 */
	__be64 default_maximum_user_object_length;
	__be64 partition_capacity_quota;
	__be64 partition_object_count;
	__be64 partition_collections_per_user_object;
	__be64 partition_count;
}  __packed;

/* 7.1.2.13 Partition Quotas attributes page (OSD_APAGE_PARTITION_QUOTAS)*/
enum {
	OSD_ATTR_PQ_DEFAULT_MAXIMUM_USER_OBJECT_LENGTH  = 0x1,        /* 8 */
	OSD_ATTR_PQ_CAPACITY_QUOTA                      = 0x10001,    /* 8 */
	OSD_ATTR_PQ_OBJECT_COUNT                        = 0x10002,    /* 8 */
	OSD_ATTR_PQ_COLLECTIONS_PER_USER_OBJECT         = 0x10081,    /* 4 */
};

struct Partition_Quotas_attributes_page {
	struct osd_attr_page_header hdr; /* id=P+2, size=0x1C */
	__be64 default_maximum_user_object_length;
	__be64 capacity_quota;
	__be64 object_count;
	__be64 collections_per_user_object;
}  __packed;

/* 7.1.2.14 User Object Quotas attributes page (OSD_APAGE_OBJECT_QUOTAS) */
enum {
	OSD_ATTR_OQ_MAXIMUM_LENGTH  = 0x1,        /* 8 */
};

struct Object_Quotas_attributes_page {
	struct osd_attr_page_header hdr; /* id=U+2, size=0x8 */
	__be64 maximum_length;
}  __packed;

/* 7.1.2.15 Root Timestamps attributes page (OSD_APAGE_ROOT_TIMESTAMP) */
enum {
	OSD_ATTR_RT_ATTRIBUTES_ACCESSED_TIME  = 0x2,        /* 6 */
	OSD_ATTR_RT_ATTRIBUTES_MODIFIED_TIME  = 0x3,        /* 6 */
	OSD_ATTR_RT_TIMESTAMP_BYPASS          = 0xFFFFFFFE, /* 1 */
};

struct root_timestamps_attributes_page {
	struct osd_attr_page_header hdr; /* id=R+3, size=0xD */
	struct osd_timestamp attributes_accessed_time;
	struct osd_timestamp attributes_modified_time;
	u8 timestamp_bypass;
}  __packed;

/* 7.1.2.16 Partition Timestamps attributes page
 * (OSD_APAGE_PARTITION_TIMESTAMP)
 */
enum {
	OSD_ATTR_PT_CREATED_TIME              = 0x1,        /* 6 */
	OSD_ATTR_PT_ATTRIBUTES_ACCESSED_TIME  = 0x2,        /* 6 */
	OSD_ATTR_PT_ATTRIBUTES_MODIFIED_TIME  = 0x3,        /* 6 */
	OSD_ATTR_PT_DATA_ACCESSED_TIME        = 0x4,        /* 6 */
	OSD_ATTR_PT_DATA_MODIFIED_TIME        = 0x5,        /* 6 */
	OSD_ATTR_PT_TIMESTAMP_BYPASS          = 0xFFFFFFFE, /* 1 */
};

struct partition_timestamps_attributes_page {
	struct osd_attr_page_header hdr; /* id=P+3, size=0x1F */
	struct osd_timestamp created_time;
	struct osd_timestamp attributes_accessed_time;
	struct osd_timestamp attributes_modified_time;
	struct osd_timestamp data_accessed_time;
	struct osd_timestamp data_modified_time;
	u8 timestamp_bypass;
}  __packed;

/* 7.1.2.17/18 Collection/Object Timestamps attributes page
 * (OSD_APAGE_COLLECTION_TIMESTAMP/OSD_APAGE_OBJECT_TIMESTAMP)
 */
enum {
	OSD_ATTR_OT_CREATED_TIME              = 0x1,        /* 6 */
	OSD_ATTR_OT_ATTRIBUTES_ACCESSED_TIME  = 0x2,        /* 6 */
	OSD_ATTR_OT_ATTRIBUTES_MODIFIED_TIME  = 0x3,        /* 6 */
	OSD_ATTR_OT_DATA_ACCESSED_TIME        = 0x4,        /* 6 */
	OSD_ATTR_OT_DATA_MODIFIED_TIME        = 0x5,        /* 6 */
};

/* same for collection */
struct object_timestamps_attributes_page {
	struct osd_attr_page_header hdr; /* id=C+3/3, size=0x1E */
	struct osd_timestamp created_time;
	struct osd_timestamp attributes_accessed_time;
	struct osd_timestamp attributes_modified_time;
	struct osd_timestamp data_accessed_time;
	struct osd_timestamp data_modified_time;
}  __packed;

285 286 287 288 289 290 291 292 293 294 295 296
/* OSD2r05: 7.1.3.19 Attributes Access attributes page
 * (OSD_APAGE_PARTITION_ATTR_ACCESS)
 *
 * each attribute is of the form below. Total array length is deduced
 * from the attribute's length
 * (See allowed_attributes_access of the struct osd_cap_object_descriptor)
 */
struct attributes_access_attr {
	struct osd_attributes_list_attrid attr_list[0];
} __packed;

/* OSD2r05: 7.1.2.21 Collections attributes page */
297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371
/* TBD */

/* 7.1.2.20 Root Policy/Security attributes page (OSD_APAGE_ROOT_SECURITY) */
enum {
	OSD_ATTR_RS_DEFAULT_SECURITY_METHOD           = 0x1,       /* 1      */
	OSD_ATTR_RS_OLDEST_VALID_NONCE_LIMIT          = 0x2,       /* 6      */
	OSD_ATTR_RS_NEWEST_VALID_NONCE_LIMIT          = 0x3,       /* 6      */
	OSD_ATTR_RS_PARTITION_DEFAULT_SECURITY_METHOD = 0x6,       /* 1      */
	OSD_ATTR_RS_SUPPORTED_SECURITY_METHODS        = 0x7,       /* 2      */
	OSD_ATTR_RS_ADJUSTABLE_CLOCK                  = 0x9,       /* 6      */
	OSD_ATTR_RS_MASTER_KEY_IDENTIFIER             = 0x7FFD,    /* 0 or 7 */
	OSD_ATTR_RS_ROOT_KEY_IDENTIFIER               = 0x7FFE,    /* 0 or 7 */
	OSD_ATTR_RS_SUPPORTED_INTEGRITY_ALGORITHM_0   = 0x80000000,/* 1,(x16)*/
	OSD_ATTR_RS_SUPPORTED_DH_GROUP_0              = 0x80000010,/* 1,(x16)*/
};

struct root_security_attributes_page {
	struct osd_attr_page_header hdr; /* id=R+5, size=0x3F */
	u8 default_security_method;
	u8 partition_default_security_method;
	__be16 supported_security_methods;
	u8 mki_valid_rki_valid;
	struct osd_timestamp oldest_valid_nonce_limit;
	struct osd_timestamp newest_valid_nonce_limit;
	struct osd_timestamp adjustable_clock;
	u8 master_key_identifier[32-25];
	u8 root_key_identifier[39-32];
	u8 supported_integrity_algorithm[16];
	u8 supported_dh_group[16];
}  __packed;

/* 7.1.2.21 Partition Policy/Security attributes page
 * (OSD_APAGE_PARTITION_SECURITY)
 */
enum {
	OSD_ATTR_PS_DEFAULT_SECURITY_METHOD        = 0x1,        /* 1      */
	OSD_ATTR_PS_OLDEST_VALID_NONCE             = 0x2,        /* 6      */
	OSD_ATTR_PS_NEWEST_VALID_NONCE             = 0x3,        /* 6      */
	OSD_ATTR_PS_REQUEST_NONCE_LIST_DEPTH       = 0x4,        /* 2      */
	OSD_ATTR_PS_FROZEN_WORKING_KEY_BIT_MASK    = 0x5,        /* 2      */
	OSD_ATTR_PS_PARTITION_KEY_IDENTIFIER       = 0x7FFF,     /* 0 or 7 */
	OSD_ATTR_PS_WORKING_KEY_IDENTIFIER_FIRST   = 0x8000,     /* 0 or 7 */
	OSD_ATTR_PS_WORKING_KEY_IDENTIFIER_LAST    = 0x800F,     /* 0 or 7 */
	OSD_ATTR_PS_POLICY_ACCESS_TAG              = 0x40000001, /* 4      */
	OSD_ATTR_PS_USER_OBJECT_POLICY_ACCESS_TAG  = 0x40000002, /* 4      */
};

struct partition_security_attributes_page {
	struct osd_attr_page_header hdr; /* id=p+5, size=0x8f */
	u8 reserved[3];
	u8 default_security_method;
	struct osd_timestamp oldest_valid_nonce;
	struct osd_timestamp newest_valid_nonce;
	__be16 request_nonce_list_depth;
	__be16 frozen_working_key_bit_mask;
	__be32 policy_access_tag;
	__be32 user_object_policy_access_tag;
	u8 pki_valid;
	__be16 wki_00_0f_vld;
	struct osd_key_identifier partition_key_identifier;
	struct osd_key_identifier working_key_identifiers[16];
}  __packed;

/* 7.1.2.22/23 Collection/Object Policy-Security attributes page
 * (OSD_APAGE_COLLECTION_SECURITY/OSD_APAGE_OBJECT_SECURITY)
 */
enum {
	OSD_ATTR_OS_POLICY_ACCESS_TAG              = 0x40000001, /* 4      */
};

struct object_security_attributes_page {
	struct osd_attr_page_header hdr; /* id=C+5/5, size=4 */
	__be32 policy_access_tag;
}  __packed;

372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396
/* OSD2r05: 7.1.3.31 Current Command attributes page
 * (OSD_APAGE_CURRENT_COMMAND)
 */
enum {
	OSD_ATTR_CC_RESPONSE_INTEGRITY_CHECK_VALUE     = 0x1, /* 32  */
	OSD_ATTR_CC_OBJECT_TYPE                        = 0x2, /* 1   */
	OSD_ATTR_CC_PARTITION_ID                       = 0x3, /* 8   */
	OSD_ATTR_CC_OBJECT_ID                          = 0x4, /* 8   */
	OSD_ATTR_CC_STARTING_BYTE_ADDRESS_OF_APPEND    = 0x5, /* 8   */
	OSD_ATTR_CC_CHANGE_IN_USED_CAPACITY            = 0x6, /* 8   */
};

/*TBD: osdv1_current_command_attributes_page */

struct osdv2_current_command_attributes_page {
	struct osd_attr_page_header hdr;  /* id=0xFFFFFFFE, size=0x44 */
	u8 response_integrity_check_value[OSD_CRYPTO_KEYID_SIZE];
	u8 object_type;
	u8 reserved[3];
	__be64 partition_id;
	__be64 object_id;
	__be64 starting_byte_address_of_append;
	__be64 change_in_used_capacity;
};

397
#endif /*ndef __OSD_ATTRIBUTES_H__*/