1 kumpf 1.2 // ===================================================================
2 // Title: Device Storage Extents 2.7
3 // Filename: Device27_StorgaeExtents.mof
4 // Version: 2.7.0
5 // Release: Final
6 // Date: 03/31/03
7 // ===================================================================
8 // Copyright 2000-2003 Distributed Management Task Force, Inc. (DMTF).
9 // All rights reserved.
10 // DMTF is a not-for-profit association of industry members dedicated
11 // to promoting enterprise and systems management and interoperability.
12 // DMTF specifications and documents may be reproduced for uses
13 // consistent with this purpose by members and non-members,
14 // provided that correct attribution is given.
15 // As DMTF specifications may be revised from time to time,
16 // the particular version and release date should always be noted.
17 //
18 // Implementation of certain elements of this standard or proposed
19 // standard may be subject to third party patent rights, including
20 // provisional patent rights (herein "patent rights"). DMTF makes
21 // no representations to users of the standard as to the existence
22 kumpf 1.2 // of such rights, and is not responsible to recognize, disclose, or
23 // identify any or all such third party patent right, owners or
24 // claimants, nor for any incomplete or inaccurate identification or
25 // disclosure of such rights, owners or claimants. DMTF shall have no
26 // liability to any party, in any manner or circumstance, under any
27 // legal theory whatsoever, for failure to recognize, disclose, or
28 // identify any such third party patent rights, or for such party's
29 // reliance on the standard or incorporation thereof in its product,
30 // protocols or testing procedures. DMTF shall have no liability to
31 // any party implementing such standard, whether such implementation
32 // is foreseeable or not, nor to any patent owner or claimant, and shall
33 // have no liability or responsibility for costs or losses incurred if
34 // a standard is withdrawn or modified after publication, and shall be
35 // indemnified and held harmless by any party implementing the
36 // standard from any and all claims of infringement by a patent owner
37 // for such implementations.
38 //
39 // For information about patents held by third-parties which have
40 // notified the DMTF that, in their opinion, such patent may relate to
41 // or impact implementations of DMTF standards, visit
42 // http://www.dmtf.org/about/policies/disclosures.php.
43 kumpf 1.2 // ===================================================================
44 // Description: The Device Model extends the management concepts that
45 // are related to LogicalDevices. This file describes
46 // the modeling of storage hierarchies (extents,
47 // volumes, partitions, etc.).
48 //
49 // The object classes below are listed in an order that
50 // avoids forward references. Required objects, defined
51 // by other working groups, are omitted.
52 // ==================================================================
53 // Change Log for v2.7 Final
54 // CR970 - Removal of the Experimental qualifier
55 // - Remove several properties from StorageVolume and make them
56 // Experimental in 2.8
57 //
58 // Change Log for v2.7
59 // CR722 - Add ProtectedExtentBasedOn, CompositeExtent, and
60 // CompositeExtentBasedOn
61 // CR882 - Deprecate Snapshot and SnapshotOfExtent. Therefore moved
62 // definitions to SccExtents.mof
63 // CR884 - Move RAID centric properties from StorageExtent to
64 kumpf 1.2 // StorageVolume
65 // ==================================================================
66
67 #pragma locale ("en_US")
68
69
70 // ===================================================================
71 // MediaPresent
72 // ===================================================================
73 [Association, Version ("2.6.0"), Description (
74 "Where a StorageExtent must be accessed through a MediaAccess"
75 "Device, this relationship is described by the MediaPresent "
76 "association."),
77 MappingStrings {"MIF.DMTF|Storage Devices|001.8"} ]
78 class CIM_MediaPresent : CIM_Dependency {
79
80 [Override ("Antecedent"), Description (
81 "The MediaAccessDevice.") ]
82 CIM_MediaAccessDevice REF Antecedent;
83
84 [Override ("Dependent"), Description (
85 kumpf 1.2 "The StorageExtent accessed using the MediaAccessDevice.") ]
86 CIM_StorageExtent REF Dependent;
87
88 [Description (
89 "Boolean indicating that the accessed StorageExtent is "
90 "fixed in the MediaAccessDevice and can not be ejected.") ]
91 boolean FixedMedia;
92 };
93
94
95 // ===================================================================
96 // RealizesExtent
97 // ===================================================================
98 [Association, Version ("2.6.0"), Description (
99 "StorageExtents can be realized by PhysicalComponents. For "
100 "example, disks or tapes are realized by PhysicalMedia. Memory "
101 "is realized by PhysicalMemory. This relationship of Extents "
102 "to PhysicalComponents is made explicit by the RealizesExtent "
103 "association. In addition, the StartingAddress of the "
104 "StorageExtent on the Component is specified here.") ]
105 class CIM_RealizesExtent : CIM_Realizes {
106 kumpf 1.2
107 [Override ("Antecedent"), Max (1), Description (
108 "The PhysicalComponent on which the Extent is realized.") ]
109 CIM_PhysicalComponent REF Antecedent;
110
111 [Override ("Dependent"), Description (
112 "The StorageExtent that is located on the Component.") ]
113 CIM_StorageExtent REF Dependent;
114
115 [Description (
116 "The starting address on the PhysicalComponent where the "
117 "StorageExtent begins. Ending address of the StorageExtent "
118 "is determined using the NumberOfBlocks and Block"
119 "Size properties of the StorageExtent object.") ]
120 uint64 StartingAddress;
121 };
122
123
124 // ===================================================================
125 // RealizedOnSide
126 // ===================================================================
127 kumpf 1.2 [Association, Version ("2.6.0"), Description (
128 "Since removable PhysicalMedia can be dual-sided, there is the "
129 "possibility for StorageExtents to be realized on a single side "
130 "of the Media. This association is a specialization of the "
131 "RealizesExtent relationship, adding a Side property to express "
132 "the Media's orientation details.") ]
133 class CIM_RealizedOnSide : CIM_RealizesExtent {
134
135 [Override ("Antecedent"), Max (1), Description (
136 "The PhysicalMedia on which the Extent is realized.") ]
137 CIM_PhysicalMedia REF Antecedent;
138
139 [Override ("Dependent"), Description (
140 "The StorageExtent that is located on the Component.") ]
141 CIM_StorageExtent REF Dependent;
142
143 [Description (
144 "An enumeration expressing on which 'Side' the Extent is "
145 "realized. Since sides can be named by various schemes (0/1 or "
146 "A/B), both schemes are expressed in the Values array of this "
147 "property."),
148 kumpf 1.2 ValueMap {"0", "1", "2", "3", "4"},
149 Values {"Unknown", "Side 0", "Side 1", "Side A", "Side B"} ]
150 uint16 Side;
151 };
152
153
154 // ===================================================================
155 // StorageVolume
156 // ===================================================================
157 [Version ("2.7.0"), Description (
158 "A StorageVolume is an Extent that is presented to the Operating"
159 "System (for example, by a hardware RAID cabinet), to a File"
160 "System (for example, by a software volume manager) or to another "
161 "entity. StorageVolumes do NOT participate in StorageRedundancy"
162 "Groups. They are directly Realized in hardware or are the end "
163 "result of assembling lower level Extents.") ]
164 class CIM_StorageVolume : CIM_StorageExtent {
165
166 };
167
168
169 kumpf 1.2 // ===================================================================
170 // MediaPartition
171 // ===================================================================
172 [Version ("2.6.0"), Description (
173 "A MediaPartition is a presentation of a contiguous range "
174 "of logical blocks and has identifying data written on/to it. "
175 "It may include a signature written by the OS or by "
176 "an application. This class is a common superclass for Disk and "
177 "TapePartions. Partitions are directly realized by Physical"
178 "Media (indicated by the RealizesExtent association) or built "
179 "on StorageVolumes (indicated by the BasedOn association).") ]
180 class CIM_MediaPartition : CIM_StorageExtent {
181
182 [Description (
183 "Boolean indicating that the Partition is labeled as "
184 "bootable. (Note that this does not mean that an Operating"
185 "System is actually loaded on the Partition.) With the advent "
186 "of bootable Tape and other bootable media, this property is "
187 "included in the higher level MediaPartition class, rather "
188 "than in a subclass such as DiskPartition.") ]
189 boolean Bootable;
190 kumpf 1.2
191 [Description (
192 "Boolean indicating that the Partition is available and "
193 "may be allocated for use.") ]
194 boolean Allocatable;
195
196 [Description (
197 "An identifying string written to the Partition. Additional "
198 "information related to this 'Signature' may be found in the "
199 "properties, SignatureState and SignatureAlgorithm."),
200 ModelCorrespondence {"CIM_MediaPartition.SignatureState",
201 "CIM_MediaPartition.SignatureAlgorithm"} ]
202 string Signature;
203
204 [Description (
205 "A free-form string describing the algorithm used to "
206 "define the Partition Signature. The value of this property "
207 "is dependent on the Signature's State."),
208 ModelCorrespondence {"CIM_MediaPartition.Signature",
209 "CIM_MediaPartition.SignatureState"} ]
210 string SignatureAlgorithm;
211 kumpf 1.2
212 [Description (
213 "An enumeration describing the state of the Partition's "
214 "identifying Signature string. Information such as "
215 "\"Uninitialized\" (value=2), or \"Assigned by Owning "
216 "Application\" (value=5) are possible entries. "),
217 ValueMap {"0", "1", "2", "3", "4", "5"},
218 Values {"Unknown", "Unimplemented", "Uninitialized",
219 "Calculated by Operating System",
220 "Calculated by a Media Manager",
221 "Assigned by Owning Application"},
222 ModelCorrespondence {"CIM_MediaPartition.Signature",
223 "CIM_MediaPartition.SignatureAlgorithm"} ]
224 string SignatureState;
225
226 [Description (
227 "Boolean indicating that the Partition can be grown/extended "
228 "without reformatting.") ]
229 boolean Extendable;
230 };
231
232 kumpf 1.2
233 // ===================================================================
234 // DiskPartition
235 // ===================================================================
236 [Version ("2.6.0"), Description (
237 "A DiskPartition is a presentation of a contiguous range "
238 "of logical blocks that is identifiable by the Operating"
239 "System via the Partition's type and subtype fields. Disk"
240 "Partitions should be directly realized by PhysicalMedia "
241 "(indicated by the RealizesDiskPartition association) or built "
242 "on StorageVolumes (indicated by the PartitionBasedOnVolume "
243 "association.") ]
244 class CIM_DiskPartition : CIM_MediaPartition {
245
246 [Description (
247 "Boolean indicating that the DiskPartition is labelled as "
248 "the primary partition for a ComputerSystem.") ]
249 boolean PrimaryPartition;
250
251 [Description ("The type of Partition."),
252 ValueMap {"0", "1", "2", "3"},
253 kumpf 1.2 Values {"Unknown", "Primary", "Extended", "Logical"} ]
254 uint16 PartitionType;
255
256 [Description (
257 "The 'sub' type of a primary, extended, or logical Partition. "
258 "The list of possible values corresponds to the decimal "
259 "representation of the typical values in the Partition "
260 "record."),
261 ValueMap {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
262 "10", "11", "12", "14", "15", "16", "17", "18",
263 "20", "22", "23", "27", "28", "33", "35", "36",
264 "38", "49", "51", "52", "53", "54", "55", "60",
265 "64", "65", "66", "67", "80", "81", "82", "83",
266 "84", "85", "86", "97", "99", "100", "101", "102",
267 "103", "104", "105", "113", "115", "116", "117",
268 "118", "119", "120", "121", "128", "129", "130",
269 "131", "132", "134", "135", "147", "148", "161",
270 "163", "164", "165", "166", "177", "179", "180",
271 "182", "183", "184", "193", "196", "198", "199",
272 "216", "219", "225", "227", "228", "229", "230",
273 "239", "240", "241", "242", "243", "244", "246",
274 kumpf 1.2 "254", "255", "65535"},
275 Values {"Empty | Microsoft", "DOS 12-bit FAT",
276 "XENIX root", "XENIX usr", "DOS 16-bit FAT",
277 "DOS Extended", "DOS 16-bit FAT (> 32MB)",
278 "OS/2 HPFS | Win NTFS | QNX Ver 2 | Adv UNIX",
279 "AIX Boot | OS /2 | Dell (Array) | Commodore DOS",
280 "AIX Data, Coherent", "OS/2 Boot Manager",
281 "32-bit FAT", "32-bit FAT", "Microsoft 16-bit FAT",
282 "Microsoft DOS Extended", "OPUS | OS/2 2.0",
283 "OS/2 (MOSS) Inactive Type 1",
284 "Compaq Diagnostics Partition | Microsoft",
285 "OS/2 (MOSS) Inactive Type 4",
286 "OS/2 (MOSS) Inactive Type 6",
287 "OS/2 (MOSS) Inactive Type 7",
288 "OS/2 (MOSS) Inactive Type B",
289 "OS/2 (MOSS) Inactive Type C", "Microsoft",
290 "Microsoft", "Microsoft", "Microsoft", "Microsoft",
291 "Microsoft", "Microsoft", "OS/2 Logical Volume Manager",
292 "Microsoft", "OS/2 JFS Log", "PowerQuest",
293 "VENIX 80286 | Series/1 Disk", "Personal RISC Boot",
294 "Veritas", "Veritas", "OnTrack Disk Manager Read Only DOS",
295 kumpf 1.2 "OnTrack Disk Manager Read/Write DOS",
296 "CPM | Microport System V/386 | OnTrack Disk Mgr | "
297 "Microsoft",
298 "OnTrack Disk Manager", "OnTrack Disk Manager Non-DOS",
299 "Micro House EZ-Drive Non-DOS",
300 "Golden Bow Vfeature | Microsoft",
301 "Storage Dimensions SpeedStor | Microsoft",
302 "UNIX - AT&T System V/386 | SCO UNIX",
303 "Novell NetWare | Speedstore", "Novell NetWare",
304 "Novell NetWare", "Novell", "Novell", "Novell",
305 "Microsoft", "Microsoft", "Microsoft", "PC/IX IBM",
306 "Microsoft", "QNX POSIX", "QNX POSIX (Secondary)",
307 "QNX POSIX (Secondary)",
308 "Minix (<=1.4a) | Linux | Microsoft",
309 "Minix (>=1.4b) | Microsoft", "Linux Swap | Prime",
310 "Linux Native | Apple", "System Hibernation for APM",
311 "Microsoft", "HPFS FT mirror", "Amoeba | Microsoft",
312 "Amoeba BBT | Microsoft", "Microsoft", "Microsoft",
313 "Microsoft", "BSD/386", "Microsoft", "Microsoft",
314 "Microsoft", "Microsoft", "Microsoft",
315 "BSDI fs | Microsoft", "BSDI Swap | Microsoft",
316 kumpf 1.2 "Microsoft", "Microsoft", "Microsoft",
317 "Syrinx | HPFS FT Disabled Mirror", "CP/M 86",
318 "Digital Research CPM-86 | Concurrent DOS | OUTRIGGER",
319 "SpeedStor 12-bit FAT Extended",
320 "DOS Read-Only | Storage Dimensions",
321 "SpeedStor 16-bit FAT Extended", "Microsoft",
322 "Microsoft", "Intel", "OS/2 Raw Data",
323 "Storage Dimensions", "DOS (Secondary)", "Microsoft",
324 "SpeedStor Large | Storage Dimensions", "Microsoft",
325 "Lan Step | SpeedStor | IBM PS/2 IML",
326 "Bad Block Tables", "Unknown"} ]
327 uint16 PartitionSubtype;
328 };
329
330
331 // ===================================================================
332 // DiskPartitionBasedOnVolume
333 // ===================================================================
334 [Association, Version ("2.6.0"), Description (
335 "DiskPartitions should be BasedOn a single StorageVolume (for "
336 "example, exposed by a hardware RAID cabinet), an SCC VolumeSet, "
337 kumpf 1.2 "or realized directly in PhysicalMedia. The first two "
338 "relationships are made explicit in this association. The latter "
339 "is conveyed by the RealizesDiskPartition association.") ]
340 class CIM_DiskPartitionBasedOnVolume : CIM_BasedOn {
341
342 [Override ("Antecedent"), Max (1), Description (
343 "The StorageVolume.") ]
344 CIM_StorageVolume REF Antecedent;
345
346 [Override ("Dependent"), Description (
347 "The DiskPartition which is built on the Volume.") ]
348 CIM_DiskPartition REF Dependent;
349 };
350
351
352 // ===================================================================
353 // TapePartition
354 // ===================================================================
355 [Version ("2.6.0"), Description (
356 "Capabilities and management of a TapePartition StorageExtent. "
357 "Note that if a PhysicalTape is not partitioned, only a "
358 kumpf 1.2 "generic StorageExtent that represents the entire Tape should "
359 "be instantiated. TapePartitions may be BasedOn other "
360 "StorageExtents or directly Realized on a PhysicalTape.") ]
361 class CIM_TapePartition : CIM_MediaPartition {
362
363 [Description (
364 "Number of blocks that are currently unused/not written on "
365 "the Partition. When this number is multiplied by the "
366 "BlockSize, inherited from StorageExtent, the total number "
367 "of bytes available for writing can be computed."),
368 Gauge ]
369 uint64 UnusedBlocks;
370 };
371
372
373 // ===================================================================
374 // TapePartitionOnSurface
375 // ===================================================================
376 [Association, Version ("2.6.0"), Description (
377 "TapePartitionOnSurface represents the ability to have one or "
378 "more TapePartitions on each surface of a PhysicalTape. The "
379 kumpf 1.2 "individual surfaces are represented as instances of "
380 "CIM_StorageExtent.") ]
381 class CIM_TapePartitionOnSurface : CIM_BasedOn {
382
383 [Override ("Antecedent"), Max (1), Description (
384 "The StorageExtent that represents the Tape's surface.") ]
385 CIM_StorageExtent REF Antecedent;
386
387 [Override ("Dependent"), Description (
388 "The TapePartition which is built on the Extent.") ]
389 CIM_TapePartition REF Dependent;
390 };
391
392
393 // ===================================================================
394 // RealizesTapePartition
395 // ===================================================================
396 [Association, Version ("2.6.0"), Description (
397 "TapePartitions are realized on PhysicalTape. This "
398 "relationship is made explicit by the RealizesTapePartition "
399 "association.") ]
400 kumpf 1.2 class CIM_RealizesTapePartition : CIM_RealizesExtent {
401
402 [Override ("Antecedent"), Max (1), Description (
403 "The PhysicalTape on which the Partition is realized.") ]
404 CIM_PhysicalTape REF Antecedent;
405
406 [Override ("Dependent"), Description (
407 "The TapePartition that is located on the Media.") ]
408 CIM_TapePartition REF Dependent;
409 };
410
411
412 // ===================================================================
413 // LogicalDisk
414 // ===================================================================
415 [Version ("2.6.0"), Description (
416 "A LogicalDisk is a presentation of a contiguous range of "
417 "logical blocks that is identifiable by a FileSystem via the "
418 "Disk's DeviceId (key) field. For example in a Windows "
419 "environment, the DeviceID field would contain a drive letter. "
420 "In a Unix environment, it would contain the access path; and in "
421 kumpf 1.2 "a NetWare environment, DeviceID would contain the volume name. "
422 "LogicalDisks are typically built on a DiskPartition or Storage"
423 "Volume (for example, exposed by a software volume manager) "
424 "using the LogicalDiskBasedOnPartition or LogicalDiskBasedOn"
425 "Volume associations. However, it can be based on other "
426 "StorageExtents, like CIM_Memory, in the case of a RAM disk. "
427 "The latter is described using the LogicalDiskBasedOnExtent "
428 "relationship. (Indeed, the BasedOnExtent association is the "
429 "superclass for the BasedOnPartition and BasedOnVolume "
430 "relationships.)") ]
431 class CIM_LogicalDisk : CIM_StorageExtent {
432 };
433
434
435 // ===================================================================
436 // LogicalDiskBasedOnExtent
437 // ===================================================================
438 [Association, Version ("2.6.0"), Description (
439 "LogicalDisks can be BasedOn a single StorageVolume, Memory "
440 "(in the case of a RAM Disk), a DiskPartition or other "
441 "StorageExtent. These relationships are made explicit in this "
442 kumpf 1.2 "association. Subclasses of the association, LogicalDiskBasedOn"
443 "Partition and LogicalDiskBasedOnVolume, detail the 'typical' "
444 "semantics.") ]
445 class CIM_LogicalDiskBasedOnExtent : CIM_BasedOn {
446
447 [Override ("Antecedent"), Max (1), Description (
448 "The StorageExtent.") ]
449 CIM_StorageExtent REF Antecedent;
450
451 [Override ("Dependent"), Description (
452 "The LogicalDisk which is built on the StorageExtent.") ]
453 CIM_LogicalDisk REF Dependent;
454 };
455
456
457 // ===================================================================
458 // LogicalDiskBasedOnVolume
459 // ===================================================================
460 [Association, Version ("2.6.0"), Description (
461 "LogicalDisks can be BasedOn a single Volume (for example, "
462 "exposed by a software volume manager), or be BasedOn a Disk"
463 kumpf 1.2 "Partition directly. The former relationship is made explicit "
464 "in this association.") ]
465 class CIM_LogicalDiskBasedOnVolume : CIM_LogicalDiskBasedOnExtent {
466
467 [Override ("Antecedent"), Max (1), Description (
468 "The StorageVolume.") ]
469 CIM_StorageVolume REF Antecedent;
470
471 [Override ("Dependent"), Description (
472 "The LogicalDisk which is built on the StorageExtent.") ]
473 CIM_LogicalDisk REF Dependent;
474 };
475
476
477 // ===================================================================
478 // LogicalDiskBasedOnPartition
479 // ===================================================================
480 [Association, Version ("2.6.0"), Description (
481 "LogicalDisks can be BasedOn a DiskPartition. For example, a "
482 "personal computer's C: drive may be located on a Partition on "
483 "local PhysicalMedia. In this association of LogicalDisks to "
484 kumpf 1.2 "Partitions, note that the cardinality of the Antecedent, Disk"
485 "Partition, is Max (1). This dictates that a LogicalDisk can not "
486 "span more than one Partition. However, there are cases where "
487 "this is true. When it occurs, the LogicalDisk is really based "
488 "on some kind of RAID configuration (for example, a mirror or "
489 "stripe set). In these scenarios, the LogicalDisk is more "
490 "correctly BasedOn a StorageVolume. To prevent incorrectly using "
491 "the LogicalDiskBasedOnPartition association, the Max (1) "
492 "qualifier was put on the Antecedent reference to the "
493 "DiskPartition.") ]
494 class CIM_LogicalDiskBasedOnPartition : CIM_LogicalDiskBasedOnExtent {
495
496 [Override ("Antecedent"), Max (1), Description (
497 "The DiskPartition.") ]
498 CIM_DiskPartition REF Antecedent;
499
500 [Override ("Dependent"), Description (
501 "The LogicalDisk which is built on the StorageExtent.") ]
502 CIM_LogicalDisk REF Dependent;
503 };
504
505 kumpf 1.2
506 // ===================================================================
507 // StorageError
508 // ===================================================================
509 [Version ("2.6.0"), Description (
510 "StorageError defines blocks of media or memory space that are "
511 "mapped 'out of use' due to errors. The Key of the class is "
512 "the StartingAddress of the bytes in error.") ]
513 class CIM_StorageError : CIM_ManagedElement {
514
515 [Propagated("CIM_StorageExtent.SystemCreationClassName"),
516 Key, MaxLen (256), Description (
517 "The scoping System's CreationClassName.") ]
518 string SystemCreationClassName;
519
520 [Propagated("CIM_StorageExtent.SystemName"),
521 Key, MaxLen (256), Description (
522 "The scoping System's Name.") ]
523 string SystemName;
524
525 [Propagated("CIM_StorageExtent.CreationClassName"),
526 kumpf 1.2 Key, MaxLen (256), Description (
527 "The scoping StorageExtent's CreationClassName.") ]
528 string DeviceCreationClassName;
529
530 [Propagated("CIM_StorageExtent.DeviceID"),
531 Key, MaxLen (64), Description (
532 "The scoping StorageExtent's DeviceID.") ]
533 string DeviceID;
534
535 [Key, Description (
536 "The starting address of the bytes in error.") ]
537 uint64 StartingAddress;
538
539 [Description (
540 "The ending address of the bytes in error.") ]
541 uint64 EndingAddress;
542 };
543
544
545 // ===================================================================
546 // StorageDefect
547 kumpf 1.2 // ===================================================================
548 [Association, Aggregation, Version ("2.6.0"), Description (
549 "The StorageDefect aggregation collects the StorageErrors for "
550 "a StorageExtent.") ]
551 class CIM_StorageDefect {
552
553 [Key, Aggregate, Min (1), Max (1), Description (
554 "The Extent reference defines the StorageExtent on which the "
555 "errors occurred.") ]
556 CIM_StorageExtent REF Extent;
557
558 [Key, Weak, Description (
559 "Error references the Error object, defining the starting "
560 "and ending addresses that are 'mapped out' of the Storage"
561 "Extent.") ]
562 CIM_StorageError REF Error;
563 };
564
565
566 // ===================================================================
567 // RealizesDiskPartition
568 kumpf 1.2 // ===================================================================
569 [Association, Version ("2.6.0"), Description (
570 "DiskPartitions can be directly realized on a PhysicalMedia. "
571 "This is used to model the creation of Partitions on a raw SCSI "
572 "or IDE drive, using the fdisk (DOS and Unix) or pdisk (Unix) "
573 "command. The StartingAddress of the DiskPartition on the "
574 "PhysicalMedia is also specified as a property of this "
575 "relationship. An alternative is that Partitions can "
576 "be BasedOn StorageVolumes, such as a VolumeSet or a Volume "
577 "exposed by a hardware RAID cabinet. The latter relationship is "
578 "modeled using the DiskPartitionBasedOnVolume association.") ]
579 class CIM_RealizesDiskPartition : CIM_RealizesExtent {
580
581 [Override ("Antecedent"), Max (1), Description (
582 "The PhysicalMedia on which the Extent is realized.") ]
583 CIM_PhysicalMedia REF Antecedent;
584
585 [Override ("Dependent"), Description (
586 "The DiskPartition that is located on the Media.") ]
587 CIM_DiskPartition REF Dependent;
588 };
589 kumpf 1.2
590
591 // ===================================================================
592 // ProtectedExtentBasedOn
593 // ===================================================================
594 [Association, Version ("2.7.0"), Description (
595 "Protected StorageExtents map to an underlying "
596 "StorageExtent. This mapping includes information about "
597 "the placement of check data on the underlying extent. "
598 "The mapping is made explicit in this association.") ]
599 class CIM_ProtectedExtentBasedOn : CIM_BasedOn {
600
601 [Override ("Antecedent"), Description (
602 "The underlying StorageExtent.") ]
603 CIM_StorageExtent REF Antecedent;
604
605 [Override ("Dependent"), Description (
606 "The Protected Space is built on this StorageExtent.") ]
607 CIM_StorageExtent REF Dependent;
608
609 [Override ("StartingAddress"), Description (
610 kumpf 1.2 "The starting logical block address of the underlying "
611 "StorageExtent from which this protected StorageExtent is "
612 "derived. In SCC, this is equivalent to the START LBA_P "
613 "field in the Redundancy Group P_Extent Descriptor."),
614 MappingStrings {"MIF.DMTF|Physical Extent|001.2"} ]
615 uint64 StartingAddress;
616
617 [Description (
618 "The size of the protected space. Note that this is "
619 "limited by the Antecedent->NumberOfBlocks, but "
620 "is included explicitly to provide for the DMTF "
621 "MIF mapping. In SCC, this is equivalent to the "
622 "NUMBER OF LBA_P(s) field in the Redundancy Group "
623 "P_Extent Descriptor."),
624 ModelCorrespondence {"CIM_StorageExtent.NumberOfBlocks"},
625 MappingStrings {"MIF.DMTF|Physical Extent|001.3"} ]
626 uint64 NumberOfBlocks;
627
628 [Description (
629 "The block size of the protected space. Note that this "
630 "is limited by the Antecedent->BlockSize. In SCC, "
631 kumpf 1.2 "this is equivalent to the NUMBER OF BYTES PER LBA_P "
632 "field in the Redundancy Group P_Extent Descriptor."),
633 ModelCorrespondence {"CIM_StorageExtent.BlockSize"},
634 MappingStrings {"MIF.DMTF|Physical Extent|001.4"},
635 Units ("Bytes") ]
636 uint64 BlockSize;
637
638 [Description (
639 "Number of bytes of user data to skip before "
640 "starting the check data interleave."),
641 Units ("Bytes"),
642 MappingStrings {"MIF.DMTF|Physical Extent|001.6"} ]
643 uint64 UnitsBeforeCheckDataInterleave;
644
645 [Description ("Number of bytes to be reserved for check data."),
646 Units ("Bytes"),
647 MappingStrings {"MIF.DMTF|Physical Extent|001.7"} ]
648 uint64 UnitsOfCheckData;
649
650 [Description ("Number of bytes to be reserved for user data."),
651 Units ("Bytes"),
652 kumpf 1.2 MappingStrings {"MIF.DMTF|Physical Extent|001.8"} ]
653 uint64 UnitsOfUserData;
654
655 };
656
657
658 // ===================================================================
659 // CompositeExtent
660 // ===================================================================
661 [Version ("2.7.0"), Description (
662 "A CompositeExtent is used to model the distribution of "
663 "user data across one or more underlying StorageExtents, which "
664 "may or not be protected by some redundancy mechanism. "
665 "CompositeExtents represent a contiguous range of logical "
666 "blocks. CompositeExtents may overlap, however, the underlying "
667 "StorageExtents within the overlap shall not contain any "
668 "check data. Distribution of check data may be specified using "
669 "the CompositeExtentBasedOn association.") ]
670 class CIM_CompositeExtent : CIM_StorageExtent {
671
672 [Override ("NumberOfBlocks"),
673 kumpf 1.2 MappingStrings {"MIF.DMTF|Volume Set|001.3"} ]
674 uint64 NumberOfBlocks;
675
676 [Description (
677 "Number of contiguous underlying StorageExtents "
678 "counted before looping back to the first underlying "
679 "StorageExtent of the current stripe. It is the number of "
680 "StorageExtents forming the user data stripe."),
681 MappingStrings {"MIF.DMTF|Volume Set|001.4"} ]
682 uint64 ExtentStripeLength;
683
684 [Description (
685 "Number of StorageExtents to stripe as a collective "
686 "set. In SCC, this value is defined as the number of "
687 "stripes to count before continuing to map into the next "
688 "contiguous set of Extents, beyond the current stripe."),
689 MappingStrings {"MIF.DMTF|Volume Set|001.5"} ]
690 uint64 ExtentInterleaveDepth;
691
692
693 [Description (
694 kumpf 1.2 "True indicates that the data is concatenated "
695 "across the various StorageExtents in the Group.") ]
696 boolean IsConcatenated;
697 };
698
699
700 // ===================================================================
701 // CompositeExtentBasedOn
702 // ===================================================================
703 [Association, Version ("2.7.0"), Description (
704 "This specialization defines how data is striped across "
705 "StorageExtents. Additionally, it includes information on "
706 "distribution of check data so that the 'usual case' RAID "
707 "devices can be created in one step.") ]
708 class CIM_CompositeExtentBasedOn : CIM_BasedOn {
709
710 [Override ("Antecedent"), Min (1), Description (
711 "The underlying StorageExtent.") ]
712 CIM_StorageExtent REF Antecedent;
713
714 [Override ("Dependent"),
715 kumpf 1.2 Description (
716 "The CompositeExtent which is built on the "
717 "StorageExtent.") ]
718 CIM_CompositeExtent REF Dependent;
719
720 [Override ("OrderIndex"), Required, Description (
721 "Order matters to CompositeExtents. An example of the use of "
722 "this property is when defining a RAID-0 striped array of "
723 "3 disks. The resultant RAID array is a CompositeExtent that "
724 "is dependent on (as described by CompositeExtentBasedOn) the "
725 "StorageExtents that represent each of the 3 disks. The "
726 "OrderIndex of each CompositeExtentBasedOn association from "
727 "the disk Extents to the RAID array could be specified as 1, "
728 "2 and 3 to indicate the order in which the disk Extents are "
729 "used to access the RAID data."),
730 MappingStrings {"MIF.DMTF|Protected Space Extent|001.1"} ]
731 uint16 OrderIndex;
732
733 [Description (
734 "True if logical blocks in the underlying StorageExtents are "
735 "mapped in decrementing order. This property corresponds to "
736 kumpf 1.2 "the INCDEC value in the SCC-2 Volume Set PS_Extent "
737 "Descriptor.") ]
738 boolean LBAsMappedByDecrementing;
739
740 [Description (
741 "True if the logical block mapping algorithm includes "
742 "check data bytes. This property corresponds to the "
743 "NOCHKSKIP attribute in the SCC-2 Volume Set PS_Extent "
744 "Descriptor.") ]
745 boolean LBAMappingIncludesCheckData;
746
747 [Description (
748 "The total number of blocks that will be consumed on "
749 "the Dependent Extent. This is limited by the Antecedent's "
750 "NumberOfBlocks, but is included explicitly to provide for "
751 "the DMTF MIF mapping. In SCC, this is equivalent to the "
752 "NUMBER OF LBA_PS(s) field in the Volume Set PS_Extent "
753 "Descriptor."),
754 ModelCorrespondence {"CIM_StorageExtent.NumberOfBlocks"},
755 MappingStrings {"MIF.DMTF|Protected Space Extent|001.3"} ]
756 uint64 NumberOfBlocks;
757 kumpf 1.2
758 [Description (
759 "The Dependent's BlockSize is limited by the Antecedent's. "
760 "In SCC, this is equivalent to the NUMBER OF BYTES PER "
761 "LBA_PS field in the RedundancyGroup P_Extent Descriptor."),
762 ModelCorrespondence {"CIM_StorageExtent.BlockSize"},
763 MappingStrings {"MIF.DMTF|Protected Space Extent|001.4"},
764 Units ("Bytes") ]
765 uint64 BlockSize;
766
767 [Description (
768 "Number of bytes which form the stripe size for the "
769 "Dependent StorageExtent. If the CompositeExtent is "
770 "concatenated instead of striped, then UserDataStripeDepth "
771 "should be set to zero."),
772 Units ("Bytes"),
773 MappingStrings {"MIF.DMTF|Protected Space Extent|001.6"} ]
774 uint64 UserDataStripeDepth;
775
776 [Description (
777 "Number of bytes of user data to skip before "
778 kumpf 1.2 "starting the check data interleave."),
779 Units ("Bytes"),
780 MappingStrings {"MIF.DMTF|Physical Extent|001.6"} ]
781 uint64 UnitsBeforeCheckDataInterleave;
782
783 [Description ("Number of bytes to be reserved for check data."),
784 Units ("Bytes"),
785 MappingStrings {"MIF.DMTF|Physical Extent|001.7"} ]
786 uint64 UnitsOfCheckData;
787
788 [Description ("Number of bytes to be reserved for user data."),
789 Units ("Bytes"),
790 MappingStrings {"MIF.DMTF|Physical Extent|001.8"} ]
791 uint64 UnitsOfUserData;
792 };
793
794
795 // ===================================================================
796 // end of file
797 // ===================================================================
|