Clean up the namespace of <sys/timeb.h>.
[dragonfly.git] / sys / dev / raid / aac / aac_debug.c
CommitLineData
984263bc
MD
1/*-
2 * Copyright (c) 2000 Michael Smith
3 * Copyright (c) 2001 Scott Long
4 * Copyright (c) 2000 BSDi
5 * Copyright (c) 2001 Adaptec, Inc.
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE.
28 *
b4df2201 29 * $FreeBSD: head/sys/dev/aac/aac_debug.c 242823 2012-11-09 13:58:52Z rdivacky $
984263bc
MD
30 */
31
32/*
33 * Debugging support.
34 */
35#include "opt_aac.h"
36
37#include <sys/param.h>
38#include <sys/systm.h>
39#include <sys/kernel.h>
e9ae7f4f 40#include <sys/conf.h>
984263bc 41
984263bc 42#include <sys/bus.h>
984263bc 43
e9ae7f4f
SW
44#include <dev/raid/aac/aacreg.h>
45#include <dev/raid/aac/aac_ioctl.h>
46#include <dev/raid/aac/aacvar.h>
984263bc
MD
47
48#ifdef AAC_DEBUG
e9ae7f4f 49int aac_debug_enable = 0;
94000270
SW
50void aac_printstate0(void);
51
94000270
SW
52/*
53 * Dump the command queue indices
54 */
55void
56aac_print_queues(struct aac_softc *sc)
57{
58 device_printf(sc->aac_dev, "FIB queue header at %p queues at %p\n",
59 &sc->aac_queues->qt_qindex[AAC_HOST_NORM_CMD_QUEUE][0],
60 &sc->aac_queues->qt_HostNormCmdQueue[0]);
e9ae7f4f 61 device_printf(sc->aac_dev, "HOST_NORM_CMD %d/%d (%d)\n",
94000270
SW
62 sc->aac_queues->qt_qindex[AAC_HOST_NORM_CMD_QUEUE][
63 AAC_PRODUCER_INDEX],
64 sc->aac_queues->qt_qindex[AAC_HOST_NORM_CMD_QUEUE][
e9ae7f4f 65 AAC_CONSUMER_INDEX],
94000270 66 AAC_HOST_NORM_CMD_ENTRIES);
e9ae7f4f 67 device_printf(sc->aac_dev, "HOST_HIGH_CMD %d/%d (%d)\n",
94000270
SW
68 sc->aac_queues->qt_qindex[AAC_HOST_HIGH_CMD_QUEUE][
69 AAC_PRODUCER_INDEX],
70 sc->aac_queues->qt_qindex[AAC_HOST_HIGH_CMD_QUEUE][
e9ae7f4f 71 AAC_CONSUMER_INDEX],
94000270 72 AAC_HOST_HIGH_CMD_ENTRIES);
e9ae7f4f 73 device_printf(sc->aac_dev, "ADAP_NORM_CMD %d/%d (%d)\n",
94000270
SW
74 sc->aac_queues->qt_qindex[AAC_ADAP_NORM_CMD_QUEUE][
75 AAC_PRODUCER_INDEX],
76 sc->aac_queues->qt_qindex[AAC_ADAP_NORM_CMD_QUEUE][
e9ae7f4f 77 AAC_CONSUMER_INDEX],
94000270 78 AAC_ADAP_NORM_CMD_ENTRIES);
e9ae7f4f 79 device_printf(sc->aac_dev, "ADAP_HIGH_CMD %d/%d (%d)\n",
94000270
SW
80 sc->aac_queues->qt_qindex[AAC_ADAP_HIGH_CMD_QUEUE][
81 AAC_PRODUCER_INDEX],
82 sc->aac_queues->qt_qindex[AAC_ADAP_HIGH_CMD_QUEUE][
e9ae7f4f 83 AAC_CONSUMER_INDEX],
94000270 84 AAC_ADAP_HIGH_CMD_ENTRIES);
e9ae7f4f 85 device_printf(sc->aac_dev, "HOST_NORM_RESP %d/%d (%d)\n",
94000270
SW
86 sc->aac_queues->qt_qindex[AAC_HOST_NORM_RESP_QUEUE][
87 AAC_PRODUCER_INDEX],
88 sc->aac_queues->qt_qindex[AAC_HOST_NORM_RESP_QUEUE][
89 AAC_CONSUMER_INDEX],
90 AAC_HOST_NORM_RESP_ENTRIES);
e9ae7f4f 91 device_printf(sc->aac_dev, "HOST_HIGH_RESP %d/%d (%d)\n",
94000270
SW
92 sc->aac_queues->qt_qindex[AAC_HOST_HIGH_RESP_QUEUE][
93 AAC_PRODUCER_INDEX],
94 sc->aac_queues->qt_qindex[AAC_HOST_HIGH_RESP_QUEUE][
95 AAC_CONSUMER_INDEX],
96 AAC_HOST_HIGH_RESP_ENTRIES);
e9ae7f4f 97 device_printf(sc->aac_dev, "ADAP_NORM_RESP %d/%d (%d)\n",
94000270
SW
98 sc->aac_queues->qt_qindex[AAC_ADAP_NORM_RESP_QUEUE][
99 AAC_PRODUCER_INDEX],
100 sc->aac_queues->qt_qindex[AAC_ADAP_NORM_RESP_QUEUE][
101 AAC_CONSUMER_INDEX],
102 AAC_ADAP_NORM_RESP_ENTRIES);
e9ae7f4f 103 device_printf(sc->aac_dev, "ADAP_HIGH_RESP %d/%d (%d)\n",
94000270
SW
104 sc->aac_queues->qt_qindex[AAC_ADAP_HIGH_RESP_QUEUE][
105 AAC_PRODUCER_INDEX],
106 sc->aac_queues->qt_qindex[AAC_ADAP_HIGH_RESP_QUEUE][
107 AAC_CONSUMER_INDEX],
108 AAC_ADAP_HIGH_RESP_ENTRIES);
e9ae7f4f 109 device_printf(sc->aac_dev, "AACQ_FREE %d/%d\n",
94000270 110 sc->aac_qstat[AACQ_FREE].q_length, sc->aac_qstat[AACQ_FREE].q_max);
e9ae7f4f 111 device_printf(sc->aac_dev, "AACQ_BIO %d/%d\n",
94000270 112 sc->aac_qstat[AACQ_BIO].q_length, sc->aac_qstat[AACQ_BIO].q_max);
e9ae7f4f 113 device_printf(sc->aac_dev, "AACQ_READY %d/%d\n",
94000270
SW
114 sc->aac_qstat[AACQ_READY].q_length,
115 sc->aac_qstat[AACQ_READY].q_max);
e9ae7f4f 116 device_printf(sc->aac_dev, "AACQ_BUSY %d/%d\n",
94000270 117 sc->aac_qstat[AACQ_BUSY].q_length, sc->aac_qstat[AACQ_BUSY].q_max);
94000270
SW
118}
119
120/*
121 * Print the command queue states for controller 0 (callable from DDB)
122 */
123void
124aac_printstate0(void)
125{
126 struct aac_softc *sc;
127
e9ae7f4f 128 sc = devclass_get_softc(devclass_find("aac"), 0);
94000270
SW
129
130 aac_print_queues(sc);
131 switch (sc->aac_hwif) {
132 case AAC_HWIF_I960RX:
e9ae7f4f 133 case AAC_HWIF_NARK:
94000270 134 device_printf(sc->aac_dev, "IDBR 0x%08x IIMR 0x%08x "
e9ae7f4f
SW
135 "IISR 0x%08x\n", AAC_MEM0_GETREG4(sc, AAC_RX_IDBR),
136 AAC_MEM0_GETREG4(sc, AAC_RX_IIMR), AAC_MEM0_GETREG4(sc, AAC_RX_IISR));
94000270 137 device_printf(sc->aac_dev, "ODBR 0x%08x OIMR 0x%08x "
e9ae7f4f
SW
138 "OISR 0x%08x\n", AAC_MEM0_GETREG4(sc, AAC_RX_ODBR),
139 AAC_MEM0_GETREG4(sc, AAC_RX_OIMR), AAC_MEM0_GETREG4(sc, AAC_RX_OISR));
140 AAC_MEM0_SETREG4(sc, AAC_RX_OIMR, 0/*~(AAC_DB_COMMAND_READY |
94000270
SW
141 AAC_DB_RESPONSE_READY | AAC_DB_PRINTF)*/);
142 device_printf(sc->aac_dev, "ODBR 0x%08x OIMR 0x%08x "
e9ae7f4f
SW
143 "OISR 0x%08x\n", AAC_MEM0_GETREG4(sc, AAC_RX_ODBR),
144 AAC_MEM0_GETREG4(sc, AAC_RX_OIMR), AAC_MEM0_GETREG4(sc, AAC_RX_OISR));
94000270
SW
145 break;
146 case AAC_HWIF_STRONGARM:
147 /* XXX implement */
148 break;
149 }
150}
151
e9ae7f4f
SW
152/*
153 * Panic in a slightly informative fashion
154 */
155void
156aac_panic(struct aac_softc *sc, char *reason)
157{
158 aac_print_queues(sc);
a7a95662 159 panic("%s", reason);
e9ae7f4f
SW
160}
161
984263bc
MD
162/*
163 * Print a FIB
164 */
165void
09ccaff3 166aac_print_fib(struct aac_softc *sc, struct aac_fib *fib, const char *caller)
984263bc 167{
f69e505f
AHJ
168 char hexstr[48];
169
984263bc
MD
170 if (fib == NULL) {
171 device_printf(sc->aac_dev,
172 "aac_print_fib called with NULL fib\n");
173 return;
174 }
175 device_printf(sc->aac_dev, "%s: FIB @ %p\n", caller, fib);
c3783d8f 176 device_printf(sc->aac_dev, " XferState %pb%i\n",
984263bc
MD
177 "\20"
178 "\1HOSTOWNED"
179 "\2ADAPTEROWNED"
180 "\3INITIALISED"
181 "\4EMPTY"
182 "\5FROMPOOL"
183 "\6FROMHOST"
184 "\7FROMADAP"
185 "\10REXPECTED"
186 "\11RNOTEXPECTED"
187 "\12DONEADAP"
188 "\13DONEHOST"
189 "\14HIGH"
190 "\15NORM"
191 "\16ASYNC"
192 "\17PAGEFILEIO"
193 "\20SHUTDOWN"
194 "\21LAZYWRITE"
195 "\22ADAPMICROFIB"
196 "\23BIOSFIB"
197 "\24FAST_RESPONSE"
c3783d8f 198 "\25APIFIB\n", fib->Header.XferState);
984263bc
MD
199 device_printf(sc->aac_dev, " Command %d\n", fib->Header.Command);
200 device_printf(sc->aac_dev, " StructType %d\n",
201 fib->Header.StructType);
202 device_printf(sc->aac_dev, " Flags 0x%x\n", fib->Header.Flags);
203 device_printf(sc->aac_dev, " Size %d\n", fib->Header.Size);
204 device_printf(sc->aac_dev, " SenderSize %d\n",
205 fib->Header.SenderSize);
206 device_printf(sc->aac_dev, " SenderAddress 0x%x\n",
207 fib->Header.SenderFibAddress);
208 device_printf(sc->aac_dev, " RcvrAddress 0x%x\n",
209 fib->Header.ReceiverFibAddress);
210 device_printf(sc->aac_dev, " SenderData 0x%x\n",
211 fib->Header.SenderData);
212 switch(fib->Header.Command) {
213 case ContainerCommand:
214 {
215 struct aac_blockread *br;
216 struct aac_blockwrite *bw;
217 struct aac_sg_table *sg;
218 int i;
219
220 br = (struct aac_blockread*)fib->data;
221 bw = (struct aac_blockwrite*)fib->data;
222 sg = NULL;
223
224 if (br->Command == VM_CtBlockRead) {
225 device_printf(sc->aac_dev,
e9ae7f4f
SW
226 " BlockRead: container %d 0x%x/%d\n",
227 br->ContainerId, br->BlockNumber,
984263bc
MD
228 br->ByteCount);
229 sg = &br->SgMap;
230 }
231 if (bw->Command == VM_CtBlockWrite) {
232 device_printf(sc->aac_dev,
233 " BlockWrite: container %d 0x%x/%d "
234 "(%s)\n", bw->ContainerId,
e9ae7f4f 235 bw->BlockNumber, bw->ByteCount,
984263bc
MD
236 bw->Stable == CSTABLE ? "stable" :
237 "unstable");
238 sg = &bw->SgMap;
239 }
240 if (sg != NULL) {
241 device_printf(sc->aac_dev,
242 " %d s/g entries\n", sg->SgCount);
243 for (i = 0; i < sg->SgCount; i++)
244 device_printf(sc->aac_dev, " 0x%08x/%d\n",
245 sg->SgEntry[i].SgAddress,
246 sg->SgEntry[i].SgByteCount);
247 }
248 break;
249 }
250 default:
f69e505f
AHJ
251 device_printf(sc->aac_dev, " %s\n", hexncpy(fib->data, 16,
252 hexstr, 48, " "));
253 device_printf(sc->aac_dev, " %s\n", hexncpy(fib->data + 16, 16,
254 hexstr, 48, " "));
984263bc
MD
255 break;
256 }
257}
258
259/*
260 * Describe an AIF we have received.
261 */
262void
263aac_print_aif(struct aac_softc *sc, struct aac_aif_command *aif)
264{
265 switch(aif->command) {
266 case AifCmdEventNotify:
267 device_printf(sc->aac_dev, "EventNotify(%d)\n", aif->seqNumber);
268 switch(aif->data.EN.type) {
269 case AifEnGeneric: /* Generic notification */
e9ae7f4f 270 device_printf(sc->aac_dev, "(Generic) %.*s\n",
984263bc
MD
271 (int)sizeof(aif->data.EN.data.EG),
272 aif->data.EN.data.EG.text);
273 break;
274 case AifEnTaskComplete: /* Task has completed */
275 device_printf(sc->aac_dev, "(TaskComplete)\n");
276 break;
277 case AifEnConfigChange: /* Adapter configuration change
278 * occurred */
279 device_printf(sc->aac_dev, "(ConfigChange)\n");
280 break;
281 case AifEnContainerChange: /* Adapter specific container
282 * configuration change */
283 device_printf(sc->aac_dev, "(ContainerChange) "
e9ae7f4f
SW
284 "container %d,%d\n",
285 aif->data.EN.data.ECC.container[0],
984263bc
MD
286 aif->data.EN.data.ECC.container[1]);
287 break;
288 case AifEnDeviceFailure: /* SCSI device failed */
289 device_printf(sc->aac_dev, "(DeviceFailure) "
e9ae7f4f 290 "handle %d\n",
984263bc
MD
291 aif->data.EN.data.EDF.deviceHandle);
292 break;
293 case AifEnMirrorFailover: /* Mirror failover started */
294 device_printf(sc->aac_dev, "(MirrorFailover) "
295 "container %d failed, "
296 "migrating from slice %d to %d\n",
e9ae7f4f
SW
297 aif->data.EN.data.EMF.container,
298 aif->data.EN.data.EMF.failedSlice,
984263bc
MD
299 aif->data.EN.data.EMF.creatingSlice);
300 break;
301 case AifEnContainerEvent: /* Significant container
302 * event */
303 device_printf(sc->aac_dev, "(ContainerEvent) "
304 "container %d event "
305 "%d\n", aif->data.EN.data.ECE.container,
306 aif->data.EN.data.ECE.eventType);
307 break;
308 case AifEnFileSystemChange: /* File system changed */
309 device_printf(sc->aac_dev, "(FileSystemChange)\n");
310 break;
311 case AifEnConfigPause: /* Container pause event */
312 device_printf(sc->aac_dev, "(ConfigPause)\n");
313 break;
314 case AifEnConfigResume: /* Container resume event */
315 device_printf(sc->aac_dev, "(ConfigResume)\n");
316 break;
317 case AifEnFailoverChange: /* Failover space assignment
318 * changed */
319 device_printf(sc->aac_dev, "(FailoverChange)\n");
320 break;
321 case AifEnRAID5RebuildDone: /* RAID5 rebuild finished */
322 device_printf(sc->aac_dev, "(RAID5RebuildDone)\n");
323 break;
324 case AifEnEnclosureManagement: /* Enclosure management event */
325 device_printf(sc->aac_dev, "(EnclosureManagement) "
326 "EMPID %d unit %d "
327 "event %d\n", aif->data.EN.data.EEE.empID,
e9ae7f4f 328 aif->data.EN.data.EEE.unitID,
984263bc
MD
329 aif->data.EN.data.EEE.eventType);
330 break;
331 case AifEnBatteryEvent: /* Significant NV battery
332 * event */
333 device_printf(sc->aac_dev, "(BatteryEvent) %d "
334 "(state was %d, is %d\n",
335 aif->data.EN.data.EBE.transition_type,
336 aif->data.EN.data.EBE.current_state,
337 aif->data.EN.data.EBE.prior_state);
338 break;
339 case AifEnAddContainer: /* A new container was
340 * created. */
341 device_printf(sc->aac_dev, "(AddContainer)\n");
342 break;
343 case AifEnDeleteContainer: /* A container was deleted. */
344 device_printf(sc->aac_dev, "(DeleteContainer)\n");
345 break;
346 case AifEnBatteryNeedsRecond: /* The battery needs
347 * reconditioning */
348 device_printf(sc->aac_dev, "(BatteryNeedsRecond)\n");
349 break;
350 case AifEnClusterEvent: /* Some cluster event */
e9ae7f4f 351 device_printf(sc->aac_dev, "(ClusterEvent) event %d\n",
984263bc
MD
352 aif->data.EN.data.ECLE.eventType);
353 break;
354 case AifEnDiskSetEvent: /* A disk set event occured. */
355 device_printf(sc->aac_dev, "(DiskSetEvent) event %d "
d9773475 356 "diskset %jd creator %jd\n",
e9ae7f4f
SW
357 aif->data.EN.data.EDS.eventType,
358 (intmax_t)aif->data.EN.data.EDS.DsNum,
d9773475 359 (intmax_t)aif->data.EN.data.EDS.CreatorId);
984263bc
MD
360 break;
361 case AifDenMorphComplete: /* A morph operation
362 * completed */
363 device_printf(sc->aac_dev, "(MorphComplete)\n");
364 break;
365 case AifDenVolumeExtendComplete: /* A volume expand operation
366 * completed */
367 device_printf(sc->aac_dev, "(VolumeExtendComplete)\n");
368 break;
369 default:
370 device_printf(sc->aac_dev, "(%d)\n", aif->data.EN.type);
371 break;
372 }
373 break;
374 case AifCmdJobProgress:
375 {
376 char *status;
377 switch(aif->data.PR[0].status) {
378 case AifJobStsSuccess:
379 status = "success"; break;
380 case AifJobStsFinished:
381 status = "finished"; break;
382 case AifJobStsAborted:
383 status = "aborted"; break;
384 case AifJobStsFailed:
385 status = "failed"; break;
386 case AifJobStsSuspended:
387 status = "suspended"; break;
388 case AifJobStsRunning:
389 status = "running"; break;
390 default:
391 status = "unknown status"; break;
392 }
393
394 device_printf(sc->aac_dev, "JobProgress (%d) - %s (%d, %d)\n",
e9ae7f4f 395 aif->seqNumber, status,
984263bc
MD
396 aif->data.PR[0].currentTick,
397 aif->data.PR[0].finalTick);
398 switch(aif->data.PR[0].jd.type) {
399 case AifJobScsiZero: /* SCSI dev clear operation */
400 device_printf(sc->aac_dev, "(ScsiZero) handle %d\n",
401 aif->data.PR[0].jd.client.scsi_dh);
402 break;
403 case AifJobScsiVerify: /* SCSI device Verify operation
404 * NO REPAIR */
405 device_printf(sc->aac_dev, "(ScsiVerify) handle %d\n",
406 aif->data.PR[0].jd.client.scsi_dh);
407 break;
408 case AifJobScsiExercise: /* SCSI device Exercise
409 * operation */
410 device_printf(sc->aac_dev, "(ScsiExercise) handle %d\n",
411 aif->data.PR[0].jd.client.scsi_dh);
412 break;
413 case AifJobScsiVerifyRepair: /* SCSI device Verify operation
414 * WITH repair */
415 device_printf(sc->aac_dev,
416 "(ScsiVerifyRepair) handle %d\n",
417 aif->data.PR[0].jd.client.scsi_dh);
418 break;
419 case AifJobCtrZero: /* Container clear operation */
420 device_printf(sc->aac_dev,
e9ae7f4f 421 "(ContainerZero) container %d\n",
984263bc
MD
422 aif->data.PR[0].jd.client.container.src);
423 break;
424 case AifJobCtrCopy: /* Container copy operation */
425 device_printf(sc->aac_dev,
e9ae7f4f 426 "(ContainerCopy) container %d to %d\n",
984263bc
MD
427 aif->data.PR[0].jd.client.container.src,
428 aif->data.PR[0].jd.client.container.dst);
429 break;
430 case AifJobCtrCreateMirror: /* Container Create Mirror
431 * operation */
432 device_printf(sc->aac_dev,
041371b5 433 "(ContainerCreateMirror) container %d\n",
984263bc
MD
434 aif->data.PR[0].jd.client.container.src);
435 /* XXX two containers? */
436 break;
437 case AifJobCtrMergeMirror: /* Container Merge Mirror
438 * operation */
439 device_printf(sc->aac_dev,
041371b5 440 "(ContainerMergeMirror) container %d\n",
984263bc
MD
441 aif->data.PR[0].jd.client.container.src);
442 /* XXX two containers? */
443 break;
444 case AifJobCtrScrubMirror: /* Container Scrub Mirror
445 * operation */
446 device_printf(sc->aac_dev,
041371b5 447 "(ContainerScrubMirror) container %d\n",
984263bc
MD
448 aif->data.PR[0].jd.client.container.src);
449 break;
450 case AifJobCtrRebuildRaid5: /* Container Rebuild Raid5
451 * operation */
452 device_printf(sc->aac_dev,
041371b5 453 "(ContainerRebuildRaid5) container %d\n",
984263bc
MD
454 aif->data.PR[0].jd.client.container.src);
455 break;
456 case AifJobCtrScrubRaid5: /* Container Scrub Raid5
457 * operation */
458 device_printf(sc->aac_dev,
e9ae7f4f 459 "(ContainerScrubRaid5) container %d\n",
984263bc
MD
460 aif->data.PR[0].jd.client.container.src);
461 break;
462 case AifJobCtrMorph: /* Container morph operation */
463 device_printf(sc->aac_dev,
e9ae7f4f 464 "(ContainerMorph) container %d\n",
984263bc
MD
465 aif->data.PR[0].jd.client.container.src);
466 /* XXX two containers? */
467 break;
468 case AifJobCtrPartCopy: /* Container Partition copy
469 * operation */
470 device_printf(sc->aac_dev,
041371b5 471 "(ContainerPartCopy) container %d to "
984263bc
MD
472 "%d\n",
473 aif->data.PR[0].jd.client.container.src,
474 aif->data.PR[0].jd.client.container.dst);
475 break;
476 case AifJobCtrRebuildMirror: /* Container Rebuild Mirror
477 * operation */
478 device_printf(sc->aac_dev,
e9ae7f4f 479 "(ContainerRebuildMirror) container "
984263bc
MD
480 "%d\n",
481 aif->data.PR[0].jd.client.container.src);
482 break;
483 case AifJobCtrCrazyCache: /* crazy cache */
484 device_printf(sc->aac_dev,
e9ae7f4f 485 "(ContainerCrazyCache) container %d\n",
984263bc
MD
486 aif->data.PR[0].jd.client.container.src);
487 /* XXX two containers? */
488 break;
489 case AifJobFsCreate: /* File System Create
490 * operation */
491 device_printf(sc->aac_dev, "(FsCreate)\n");
492 break;
493 case AifJobFsVerify: /* File System Verify
494 * operation */
495 device_printf(sc->aac_dev, "(FsVerivy)\n");
496 break;
497 case AifJobFsExtend: /* File System Extend
498 * operation */
499 device_printf(sc->aac_dev, "(FsExtend)\n");
500 break;
501 case AifJobApiFormatNTFS: /* Format a drive to NTFS */
502 device_printf(sc->aac_dev, "(FormatNTFS)\n");
503 break;
504 case AifJobApiFormatFAT: /* Format a drive to FAT */
505 device_printf(sc->aac_dev, "(FormatFAT)\n");
506 break;
507 case AifJobApiUpdateSnapshot: /* update the read/write half
508 * of a snapshot */
509 device_printf(sc->aac_dev, "(UpdateSnapshot)\n");
510 break;
511 case AifJobApiFormatFAT32: /* Format a drive to FAT32 */
512 device_printf(sc->aac_dev, "(FormatFAT32)\n");
513 break;
514 case AifJobCtlContinuousCtrVerify: /* Adapter operation */
515 device_printf(sc->aac_dev, "(ContinuousCtrVerify)\n");
516 break;
517 default:
518 device_printf(sc->aac_dev, "(%d)\n",
519 aif->data.PR[0].jd.type);
520 break;
521 }
522 break;
523 }
524 case AifCmdAPIReport:
525 device_printf(sc->aac_dev, "APIReport (%d)\n", aif->seqNumber);
526 break;
527 case AifCmdDriverNotify:
528 device_printf(sc->aac_dev, "DriverNotify (%d)\n",
529 aif->seqNumber);
530 break;
531 default:
532 device_printf(sc->aac_dev, "AIF %d (%d)\n", aif->command,
533 aif->seqNumber);
534 break;
535 }
536}
537#endif /* AAC_DEBUG */