Lines Matching defs:mpt

44 __FBSDID("$FreeBSD: releng/11.0/sys/dev/mpt/mpt_raid.c 297862 2016-04-12 17:23:03Z pfg $");
46 #include <dev/mpt/mpt.h>
47 #include <dev/mpt/mpt_raid.h>
49 #include "dev/mpt/mpilib/mpi_ioc.h" /* XXX Fix Event Handling!!! */
50 #include "dev/mpt/mpilib/mpi_raid.h"
103 static int mpt_raid_reply_frame_handler(struct mpt_softc *mpt, request_t *req,
105 static int mpt_spawn_raid_thread(struct mpt_softc *mpt);
106 static void mpt_terminate_raid_thread(struct mpt_softc *mpt);
110 static void mpt_enable_vol(struct mpt_softc *mpt,
121 static void mpt_vol_prt(struct mpt_softc *mpt, struct mpt_raid_volume *vol,
123 static void mpt_disk_prt(struct mpt_softc *mpt, struct mpt_raid_disk *disk,
126 static int mpt_issue_raid_req(struct mpt_softc *mpt,
131 static int mpt_refresh_raid_data(struct mpt_softc *mpt);
132 static void mpt_schedule_raid_refresh(struct mpt_softc *mpt);
192 mpt_vol_prt(struct mpt_softc *mpt, struct mpt_raid_volume *vol,
197 printf("%s:vol%d(%s:%d:%d): ", device_get_nameunit(mpt->dev),
198 (u_int)(vol - mpt->raid_volumes), device_get_nameunit(mpt->dev),
206 mpt_disk_prt(struct mpt_softc *mpt, struct mpt_raid_disk *disk,
213 device_get_nameunit(mpt->dev),
217 printf("(%s:%d:%d): ", device_get_nameunit(mpt->dev),
230 struct mpt_softc *mpt;
232 mpt = (struct mpt_softc*)callback_arg;
244 mpt_lprt(mpt, MPT_PRT_DEBUG, "Callback for %d\n",
247 RAID_VOL_FOREACH(mpt, mpt_vol) {
253 mpt_adjust_queue_depth(mpt, mpt_vol, path);
264 mpt_raid_probe(struct mpt_softc *mpt)
267 if (mpt->ioc_page2 == NULL || mpt->ioc_page2->MaxPhysDisks == 0) {
274 mpt_raid_attach(struct mpt_softc *mpt)
280 mpt_callout_init(mpt, &mpt->raid_timer);
282 error = mpt_spawn_raid_thread(mpt);
284 mpt_prt(mpt, "Unable to spawn RAID thread!\n");
288 MPT_LOCK(mpt);
290 error = mpt_register_handler(mpt, MPT_HANDLER_REPLY, handler,
293 mpt_prt(mpt, "Unable to register RAID haandler!\n");
297 xpt_setup_ccb(&csa.ccb_h, mpt->path, 5);
301 csa.callback_arg = mpt;
304 mpt_prt(mpt, "mpt_raid_attach: Unable to register "
307 MPT_UNLOCK(mpt);
309 mpt_raid_sysctl_attach(mpt);
312 MPT_UNLOCK(mpt);
313 mpt_raid_detach(mpt);
318 mpt_raid_enable(struct mpt_softc *mpt)
325 mpt_raid_detach(struct mpt_softc *mpt)
330 mpt_callout_drain(mpt, &mpt->raid_timer);
332 MPT_LOCK(mpt);
333 mpt_terminate_raid_thread(mpt);
335 mpt_deregister_handler(mpt, MPT_HANDLER_REPLY, handler,
337 xpt_setup_ccb(&csa.ccb_h, mpt->path, /*priority*/5);
341 csa.callback_arg = mpt;
343 MPT_UNLOCK(mpt);
347 mpt_raid_ioc_reset(struct mpt_softc *mpt, int type)
370 mpt_raid_event(struct mpt_softc *mpt, request_t *req,
388 if (mpt->raid_volumes != NULL && mpt->ioc_page2 != NULL) {
389 for (i = 0; i < mpt->ioc_page2->MaxVolumes; i++) {
390 mpt_vol = &mpt->raid_volumes[i];
400 if (i >= mpt->ioc_page2->MaxVolumes) {
407 if (raid_event->PhysDiskNum != 0xFF && mpt->raid_disks != NULL) {
408 mpt_disk = mpt->raid_disks + raid_event->PhysDiskNum;
436 mpt->raid_rescan++;
443 mpt->raid_rescan++;
447 mpt->raid_rescan++;
453 mpt->raid_rescan++;
462 mpt_disk_prt(mpt, mpt_disk, "");
464 mpt_vol_prt(mpt, mpt_vol, "");
466 mpt_prt(mpt, "Volume(%d:%d", raid_event->VolumeBus,
470 mpt_prtc(mpt, ":%d): ",
473 mpt_prtc(mpt, "): ");
477 mpt_prtc(mpt, "Unhandled RaidEvent %#x\n",
480 mpt_prtc(mpt, "%s\n",
487 mpt_disk_prt(mpt, mpt_disk, "");
489 mpt_prt(mpt, "Volume(%d:%d:%d: ",
492 mpt_prtc(mpt, "ASC 0x%x, ASCQ 0x%x)\n",
496 mpt_raid_wakeup(mpt);
501 mpt_raid_shutdown(struct mpt_softc *mpt)
505 if (mpt->raid_mwce_setting != MPT_RAID_MWCE_REBUILD_ONLY) {
509 mpt->raid_mwce_setting = MPT_RAID_MWCE_OFF;
510 RAID_VOL_FOREACH(mpt, mpt_vol) {
511 mpt_verify_mwce(mpt, mpt_vol);
516 mpt_raid_reply_handler(struct mpt_softc *mpt, request_t *req,
526 free_req = mpt_raid_reply_frame_handler(mpt, req, reply_frame);
535 TAILQ_REMOVE(&mpt->request_pending_list, req, links);
540 mpt_free_request(mpt, req);
551 mpt_raid_reply_frame_handler(struct mpt_softc *mpt, request_t *req,
564 mpt_prt(mpt, "QUIESCE PHYSIO DONE\n");
567 mpt_prt(mpt, "ENABLY PHYSIO DONE\n");
583 mpt_issue_raid_req(struct mpt_softc *mpt, struct mpt_raid_volume *vol,
612 mpt_check_doorbell(mpt);
613 mpt_send_cmd(mpt, req);
616 return (mpt_wait_req(mpt, req, REQ_STATE_DONE, REQ_STATE_DONE,
625 mpt_spawn_raid_thread(struct mpt_softc *mpt)
636 MPT_LOCK(mpt);
637 xpt_freeze_simq(mpt->phydisk_sim, 1);
638 MPT_UNLOCK(mpt);
639 error = kproc_create(mpt_raid_thread, mpt,
640 &mpt->raid_thread, /*flags*/0, /*altstack*/0,
641 "mpt_raid%d", mpt->unit);
643 MPT_LOCK(mpt);
644 xpt_release_simq(mpt->phydisk_sim, /*run_queue*/FALSE);
645 MPT_UNLOCK(mpt);
651 mpt_terminate_raid_thread(struct mpt_softc *mpt)
654 if (mpt->raid_thread == NULL) {
657 mpt->shutdwn_raid = 1;
658 wakeup(&mpt->raid_volumes);
663 mpt_sleep(mpt, &mpt->raid_thread, PUSER, "thtrm", 0);
669 struct mpt_softc *mpt;
672 mpt = (struct mpt_softc *)arg;
674 MPT_LOCK(mpt);
675 while (mpt->shutdwn_raid == 0) {
677 if (mpt->raid_wakeup == 0) {
678 mpt_sleep(mpt, &mpt->raid_volumes, PUSER, "idle", 0);
682 mpt->raid_wakeup = 0;
684 if (mpt_refresh_raid_data(mpt)) {
685 mpt_schedule_raid_refresh(mpt); /* XX NOT QUITE RIGHT */
695 xpt_release_simq(mpt->phydisk_sim, TRUE);
698 if (mpt->raid_rescan != 0) {
702 mpt->raid_rescan = 0;
703 MPT_UNLOCK(mpt);
707 MPT_LOCK(mpt);
709 cam_sim_path(mpt->phydisk_sim),
713 mpt_prt(mpt, "Unable to rescan RAID Bus!\n");
719 mpt->raid_thread = NULL;
720 wakeup(&mpt->raid_thread);
721 MPT_UNLOCK(mpt);
736 mpt_raid_quiesce_disk(struct mpt_softc *mpt, struct mpt_raid_disk *mpt_disk,
751 rv = mpt_issue_raid_req(mpt, mpt_disk->volume, mpt_disk, req,
762 mpt_disk_prt(mpt, mpt_disk, "mpt_raid_quiesce_disk: "
772 mpt_disk_prt(mpt, mpt_disk, "Quiece Failed"
787 mpt_map_physdisk(struct mpt_softc *mpt, union ccb *ccb, target_id_t *tgt)
791 mpt_disk = mpt->raid_disks + ccb->ccb_h.target_id;
792 if (ccb->ccb_h.target_id < mpt->raid_max_disks
797 mpt_lprt(mpt, MPT_PRT_DEBUG1, "mpt_map_physdisk(%d) - Not Active\n",
804 mpt_is_raid_member(struct mpt_softc *mpt, target_id_t tgt)
809 if (mpt->ioc_page2 == NULL || mpt->ioc_page2->MaxPhysDisks == 0)
811 for (i = 0; i < mpt->ioc_page2->MaxPhysDisks; i++) {
812 mpt_disk = &mpt->raid_disks[i];
823 mpt_is_raid_volume(struct mpt_softc *mpt, target_id_t tgt)
828 if (mpt->ioc_page2 == NULL || mpt->ioc_page2->MaxPhysDisks == 0) {
831 ioc_vol = mpt->ioc_page2->RaidVolume;
832 ioc_last_vol = ioc_vol + mpt->ioc_page2->NumActiveVolumes;
843 mpt_enable_vol(struct mpt_softc *mpt, struct mpt_raid_volume *mpt_vol,
863 req = mpt_get_request(mpt, /*sleep_ok*/TRUE);
865 mpt_vol_prt(mpt, mpt_vol,
870 rv = mpt_issue_raid_req(mpt, mpt_vol, /*disk*/NULL, req,
876 mpt_vol_prt(mpt, mpt_vol, "mpt_enable_vol: "
885 mpt_vol_prt(mpt, mpt_vol, "%s Volume Failed: %d:%x:%x\n",
890 mpt_free_request(mpt, req);
895 mpt_verify_mwce(struct mpt_softc *mpt, struct mpt_raid_volume *mpt_vol)
915 switch (mpt->raid_mwce_setting) {
942 req = mpt_get_request(mpt, /*sleep_ok*/TRUE);
944 mpt_vol_prt(mpt, mpt_vol,
954 rv = mpt_issue_raid_req(mpt, mpt_vol, /*disk*/NULL, req,
959 mpt_vol_prt(mpt, mpt_vol, "mpt_verify_mwce: "
967 mpt_vol_prt(mpt, mpt_vol, "Write Cache Enable Failed: "
974 mpt_free_request(mpt, req);
978 mpt_verify_resync_rate(struct mpt_softc *mpt, struct mpt_raid_volume *mpt_vol)
988 if (mpt->raid_resync_rate == MPT_RAID_RESYNC_RATE_NC)
998 && vol_pg->ResyncRate != mpt->raid_resync_rate) {
1000 req = mpt_get_request(mpt, /*sleep_ok*/TRUE);
1002 mpt_vol_prt(mpt, mpt_vol, "mpt_verify_resync_rate: "
1007 rv = mpt_issue_raid_req(mpt, mpt_vol, /*disk*/NULL, req,
1009 mpt->raid_resync_rate, /*addr*/0,
1012 mpt_vol_prt(mpt, mpt_vol, "mpt_refresh_raid_data: "
1021 mpt_vol_prt(mpt, mpt_vol, "Resync Rate Setting Failed: "
1025 vol_pg->ResyncRate = mpt->raid_resync_rate;
1026 mpt_free_request(mpt, req);
1027 } else if ((prio && mpt->raid_resync_rate < 128)
1028 || (!prio && mpt->raid_resync_rate >= 128)) {
1031 req = mpt_get_request(mpt, /*sleep_ok*/TRUE);
1033 mpt_vol_prt(mpt, mpt_vol, "mpt_verify_resync_rate: "
1043 rv = mpt_issue_raid_req(mpt, mpt_vol, /*disk*/NULL, req,
1048 mpt_vol_prt(mpt, mpt_vol, "mpt_refresh_raid_data: "
1056 mpt_vol_prt(mpt, mpt_vol, "Resync Rate Setting Failed: "
1064 mpt_free_request(mpt, req);
1069 mpt_adjust_queue_depth(struct mpt_softc *mpt, struct mpt_raid_volume *mpt_vol,
1078 crs.openings = mpt->raid_queue_depth;
1081 mpt_vol_prt(mpt, mpt_vol, "mpt_adjust_queue_depth failed "
1086 mpt_announce_vol(struct mpt_softc *mpt, struct mpt_raid_volume *mpt_vol)
1092 mpt_vol_prt(mpt, mpt_vol, "Settings (");
1096 mpt_prtc(mpt, " Member-WCE");
1099 mpt_prtc(mpt, " Offline-On-SMART-Err");
1102 mpt_prtc(mpt, " Hot-Plug-Spares");
1105 mpt_prtc(mpt, " High-Priority-ReSync");
1111 mpt_prtc(mpt, " )\n");
1113 mpt_vol_prt(mpt, mpt_vol, "Using Spare Pool%s",
1122 mpt_prtc(mpt, " %d", i);
1124 mpt_prtc(mpt, "\n");
1126 mpt_vol_prt(mpt, mpt_vol, "%d Members:\n", vol_pg->NumPhysDisks);
1130 int pt_bus = cam_sim_bus(mpt->phydisk_sim);
1133 mpt_disk = mpt->raid_disks + vol_pg->PhysDisk[i].PhysDiskNum;
1135 mpt_prtc(mpt, " ");
1136 mpt_prtc(mpt, "(%s:%d:%d:0): ", device_get_nameunit(mpt->dev),
1139 mpt_prtc(mpt, "%s", mpt_disk->member_number == 0?
1142 mpt_prtc(mpt, "Stripe Position %d",
1148 mpt_prtc(mpt, " Out of Sync");
1151 mpt_prtc(mpt, " Quiesced");
1154 mpt_prtc(mpt, " Inactive");
1157 mpt_prtc(mpt, " Was Optimal");
1160 mpt_prtc(mpt, " Was Non-Optimal");
1164 mpt_prtc(mpt, " Online");
1167 mpt_prtc(mpt, " Missing");
1170 mpt_prtc(mpt, " Incompatible");
1173 mpt_prtc(mpt, " Failed");
1176 mpt_prtc(mpt, " Initializing");
1179 mpt_prtc(mpt, " Requested Offline");
1182 mpt_prtc(mpt, " Requested Failed");
1186 mpt_prtc(mpt, " Offline Other (%x)", s);
1189 mpt_prtc(mpt, "\n");
1194 mpt_announce_disk(struct mpt_softc *mpt, struct mpt_raid_disk *mpt_disk)
1197 int rd_bus = cam_sim_bus(mpt->sim);
1198 int pt_bus = cam_sim_bus(mpt->phydisk_sim);
1202 mpt_disk_prt(mpt, mpt_disk,
1204 device_get_nameunit(mpt->dev), rd_bus,
1205 disk_pg->PhysDiskID, device_get_nameunit(mpt->dev),
1206 pt_bus, mpt_disk - mpt->raid_disks);
1209 mpt_disk_prt(mpt, mpt_disk, "Member of Hot Spare Pool%s",
1218 mpt_prtc(mpt, " %d", i);
1220 mpt_prtc(mpt, "\n");
1224 mpt_refresh_raid_disk(struct mpt_softc *mpt, struct mpt_raid_disk *mpt_disk,
1229 rv = mpt_read_cfg_header(mpt, MPI_CONFIG_PAGETYPE_RAID_PHYSDISK,
1234 mpt_prt(mpt, "mpt_refresh_raid_disk: "
1239 rv = mpt_read_cur_cfg_page(mpt, ioc_disk->PhysDiskNum,
1244 mpt_prt(mpt, "mpt_refresh_raid_disk: "
1251 mpt_refresh_raid_vol(struct mpt_softc *mpt, struct mpt_raid_volume *mpt_vol,
1263 rv = mpt_read_cfg_header(mpt, MPI_CONFIG_PAGETYPE_RAID_VOLUME, 0,
1266 mpt_vol_prt(mpt, mpt_vol,
1272 rv = mpt_read_cur_cfg_page(mpt, ioc_vol->VolumePageNumber,
1273 &vol_pg->Header, mpt->raid_page0_len, TRUE, 5000);
1275 mpt_vol_prt(mpt, mpt_vol,
1287 mpt_disk = mpt->raid_disks + vol_pg->PhysDisk[i].PhysDiskNum;
1299 req = mpt_get_request(mpt, TRUE);
1301 mpt_vol_prt(mpt, mpt_vol,
1305 rv = mpt_issue_raid_req(mpt, mpt_vol, NULL, req,
1308 mpt_vol_prt(mpt, mpt_vol,
1310 mpt_free_request(mpt, req);
1323 mpt_vol_prt(mpt, mpt_vol,
1326 mpt_free_request(mpt, req);
1336 mpt_refresh_raid_data(struct mpt_softc *mpt)
1348 if (mpt->ioc_page2 == NULL || mpt->ioc_page3 == NULL) {
1357 for (i = 0; i < mpt->ioc_page2->MaxPhysDisks; i++) {
1358 mpt->raid_disks[i].flags &= ~MPT_RDF_REFERENCED;
1360 for (i = 0; i < mpt->ioc_page2->MaxVolumes; i++) {
1361 mpt->raid_volumes[i].flags &= ~MPT_RVF_REFERENCED;
1367 len = mpt->ioc_page3->Header.PageLength * sizeof(uint32_t);
1368 rv = mpt_read_cur_cfg_page(mpt, /*PageAddress*/0,
1369 &mpt->ioc_page3->Header, len,
1372 mpt_prt(mpt,
1376 mpt2host_config_page_ioc3(mpt->ioc_page3);
1378 ioc_disk = mpt->ioc_page3->PhysDisk;
1379 ioc_last_disk = ioc_disk + mpt->ioc_page3->NumPhysDisks;
1383 mpt_disk = mpt->raid_disks + ioc_disk->PhysDiskNum;
1388 mpt_refresh_raid_disk(mpt, mpt_disk, ioc_disk);
1392 mpt->raid_rescan++;
1398 len = mpt->ioc_page2->Header.PageLength * sizeof(uint32_t);
1399 rv = mpt_read_cur_cfg_page(mpt, /*PageAddress*/0,
1400 &mpt->ioc_page2->Header, len,
1403 mpt_prt(mpt, "mpt_refresh_raid_data: "
1407 mpt2host_config_page_ioc2(mpt->ioc_page2);
1409 ioc_vol = mpt->ioc_page2->RaidVolume;
1410 ioc_last_vol = ioc_vol + mpt->ioc_page2->NumActiveVolumes;
1414 mpt_vol = mpt->raid_volumes + ioc_vol->VolumePageNumber;
1424 mpt_refresh_raid_vol(mpt, mpt_vol, ioc_vol);
1430 for (i = 0; i < mpt->ioc_page2->MaxVolumes; i++) {
1437 mpt_vol = &mpt->raid_volumes[i];
1446 mpt_vol_prt(mpt, mpt_vol, "No longer configured\n");
1452 mpt_announce_vol(mpt, mpt_vol);
1464 mpt_vol_prt(mpt, mpt_vol, "%s - %s\n",
1466 mpt_verify_mwce(mpt, mpt_vol);
1472 mpt_vol_prt(mpt, mpt_vol, "Status (");
1476 mpt_prtc(mpt, " Enabled");
1479 mpt_prtc(mpt, " Quiesced");
1482 mpt_prtc(mpt, " Re-Syncing");
1485 mpt_prtc(mpt, " Inactive");
1491 mpt_prtc(mpt, " )\n");
1497 mpt_verify_resync_rate(mpt, mpt_vol);
1504 mpt_vol_prt(mpt, mpt_vol, "Rate %d.%d%%\n",
1509 mpt_vol_prt(mpt, mpt_vol, "%s Priority Re-Sync\n",
1512 mpt_vol_prt(mpt, mpt_vol, "%ju of %ju "
1517 mpt_schedule_raid_refresh(mpt);
1520 for (i = 0; i < mpt->ioc_page2->MaxPhysDisks; i++) {
1525 mpt_disk = &mpt->raid_disks[i];
1533 mpt_disk_prt(mpt, mpt_disk, "No longer configured\n");
1535 mpt->raid_rescan++;
1541 mpt_announce_disk(mpt, mpt_disk);
1549 mpt_disk_prt(mpt, mpt_disk, "%s\n", mpt_disk_state(mpt_disk));
1553 mpt_disk_prt(mpt, mpt_disk, "Status (");
1557 mpt_prtc(mpt, " Out-Of-Sync");
1560 mpt_prtc(mpt, " Quiesced");
1566 mpt_prtc(mpt, " )\n");
1569 mpt->raid_nonopt_volumes = nonopt_volumes;
1576 struct mpt_softc *mpt;
1578 mpt = (struct mpt_softc *)arg;
1579 MPT_LOCK_ASSERT(mpt);
1580 mpt_raid_wakeup(mpt);
1584 mpt_schedule_raid_refresh(struct mpt_softc *mpt)
1587 callout_reset(&mpt->raid_timer, MPT_RAID_SYNC_REPORT_INTERVAL,
1588 mpt_raid_timer, mpt);
1592 mpt_raid_free_mem(struct mpt_softc *mpt)
1595 if (mpt->raid_volumes) {
1598 for (i = 0; i < mpt->raid_max_volumes; i++) {
1599 mpt_raid = &mpt->raid_volumes[i];
1605 free(mpt->raid_volumes, M_DEVBUF);
1606 mpt->raid_volumes = NULL;
1608 if (mpt->raid_disks) {
1609 free(mpt->raid_disks, M_DEVBUF);
1610 mpt->raid_disks = NULL;
1612 if (mpt->ioc_page2) {
1613 free(mpt->ioc_page2, M_DEVBUF);
1614 mpt->ioc_page2 = NULL;
1616 if (mpt->ioc_page3) {
1617 free(mpt->ioc_page3, M_DEVBUF);
1618 mpt->ioc_page3 = NULL;
1620 mpt->raid_max_volumes = 0;
1621 mpt->raid_max_disks = 0;
1625 mpt_raid_set_vol_resync_rate(struct mpt_softc *mpt, u_int rate)
1634 MPT_LOCK(mpt);
1635 mpt->raid_resync_rate = rate;
1636 RAID_VOL_FOREACH(mpt, mpt_vol) {
1640 mpt_verify_resync_rate(mpt, mpt_vol);
1642 MPT_UNLOCK(mpt);
1647 mpt_raid_set_vol_queue_depth(struct mpt_softc *mpt, u_int vol_queue_depth)
1654 MPT_LOCK(mpt);
1655 mpt->raid_queue_depth = vol_queue_depth;
1656 RAID_VOL_FOREACH(mpt, mpt_vol) {
1663 mpt->raid_rescan = 0;
1666 cam_sim_path(mpt->sim),
1670 mpt_vol_prt(mpt, mpt_vol, "Unable to allocate path!\n");
1673 mpt_adjust_queue_depth(mpt, mpt_vol, path);
1676 MPT_UNLOCK(mpt);
1681 mpt_raid_set_vol_mwce(struct mpt_softc *mpt, mpt_raid_mwce_t mwce)
1686 MPT_LOCK(mpt);
1687 if (mwce == mpt->raid_mwce_setting) {
1688 MPT_UNLOCK(mpt);
1699 if (mpt->raid_mwce_set == 0
1700 && mpt->raid_mwce_setting == MPT_RAID_MWCE_NC
1704 mpt->raid_mwce_setting = mwce;
1705 RAID_VOL_FOREACH(mpt, mpt_vol) {
1725 mpt_vol_prt(mpt, mpt_vol, "WARNING - Unsafe shutdown "
1728 mpt_verify_mwce(mpt, mpt_vol);
1730 mpt->raid_mwce_set = 1;
1731 MPT_UNLOCK(mpt);
1747 struct mpt_softc *mpt;
1755 mpt = (struct mpt_softc *)arg1;
1756 str = mpt_vol_mwce_strs[mpt->raid_mwce_setting];
1774 return (mpt_raid_set_vol_mwce(mpt, i));
1783 struct mpt_softc *mpt;
1789 mpt = (struct mpt_softc *)arg1;
1790 raid_resync_rate = mpt->raid_resync_rate;
1797 return (mpt_raid_set_vol_resync_rate(mpt, raid_resync_rate));
1803 struct mpt_softc *mpt;
1809 mpt = (struct mpt_softc *)arg1;
1810 raid_queue_depth = mpt->raid_queue_depth;
1817 return (mpt_raid_set_vol_queue_depth(mpt, raid_queue_depth));
1821 mpt_raid_sysctl_attach(struct mpt_softc *mpt)
1823 struct sysctl_ctx_list *ctx = device_get_sysctl_ctx(mpt->dev);
1824 struct sysctl_oid *tree = device_get_sysctl_tree(mpt->dev);
1827 "vol_member_wce", CTLTYPE_STRING | CTLFLAG_RW, mpt, 0,
1832 "vol_queue_depth", CTLTYPE_INT | CTLFLAG_RW, mpt, 0,
1837 "vol_resync_rate", CTLTYPE_INT | CTLFLAG_RW, mpt, 0,
1842 &mpt->raid_nonopt_volumes, 0,