• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-12-stable/sys/dev/hptmv/

Lines Matching refs:pArray

570 	PVDevice pArray,pChild;
591 mArGetArrayTable(pArray);
592 if(!pArray) return INVALID_DEVICEID;
597 pArray->VDeviceType = VD_JBOD;
603 pArray->VDeviceType = VD_RAID_0;
609 pArray->VDeviceType = VD_RAID_5;
612 pArray->u.array.rf_need_rebuild = 1;
618 pArray->VDeviceType = VD_RAID_1;
620 pArray->u.array.bArnMember = pParam->nDisk;
621 pArray->u.array.bArRealnMember = pParam->nDisk;
622 pArray->u.array.bArBlockSizeShift = pParam->BlockSizeShift;
623 pArray->u.array.bStripeWitch = (1 << pParam->BlockSizeShift);
624 pArray->u.array.dArStamp = Stamp;
626 pArray->u.array.rf_need_sync = 1;
627 pArray->u.array.rf_newly_created = 1;
630 (pArray->VDeviceType == VD_RAID_1))
632 pArray->u.array.rf_newly_created = 0; /* R1 shall still be accessible */
633 pArray->u.array.rf_need_rebuild = 1;
634 pArray->u.array.rf_auto_rebuild = 1;
635 pArray->u.array.rf_duplicate_and_create = 1;
642 pArray->u.array.RebuildSectors = pArray->u.array.rf_need_rebuild? 0 : MAX_LBA_T;
644 memcpy(pArray->u.array.ArrayName, pParam->ArrayName, MAX_ARRAY_NAME);
648 pArray->u.array.pMember[i] = ID_TO_VDEV(pParam->Members[i]);
649 pArray->u.array.pMember[i]->bSerialNumber = i;
650 pArray->u.array.pMember[i]->pParent = pArray;
654 pArray->VDeviceType!=VD_RAID_1 ||
656 UnregisterVDevice(pArray->u.array.pMember[i]);
658 if(pArray->VDeviceType == VD_RAID_5)
659 pArray->u.array.pMember[i]->vf_cache_disk = 1;
691 pArray->u.array.pMember[i] = pChild;
695 pChild->pParent = pArray;
703 pArray->VDeviceType = VD_RAID_0;
705 pArray->u.array.bArnMember = pParam->nDisk / 2;
706 pArray->u.array.bArRealnMember = pParam->nDisk / 2;
707 pArray->u.array.bArBlockSizeShift = pParam->BlockSizeShift;
708 pArray->u.array.bStripeWitch = (1 << pParam->BlockSizeShift);
709 pArray->u.array.dArStamp = Stamp;
711 pArray->u.array.rf_need_sync = 1;
712 pArray->u.array.rf_newly_created = 1;
714 memcpy(pArray->u.array.ArrayName, pParam->ArrayName, MAX_ARRAY_NAME);
722 for(i = 0; i < pArray->u.array.bArnMember; i++)
723 pArray->u.array.pMember[i]->pfnDeviceFailed = pfnDeviceFailed[pArray->VDeviceType];
726 (pArray->VDeviceType == VD_RAID_1))
728 pArray->vf_bootmark = pArray->u.array.pMember[0]->vf_bootmark;
729 pArray->vf_bootable = pArray->u.array.pMember[0]->vf_bootable;
730 pArray->u.array.pMember[0]->vf_bootable = 0;
731 pArray->u.array.pMember[0]->vf_bootmark = 0;
733 _vbus_p->pVDevice[Loca] = pArray;
735 pArray->u.array.rf_duplicate_and_created = 1;
736 pArray->pVBus = _vbus_p;
750 pArray->vf_online = 1;
751 pArray->pParent = NULL;
753 switch(pArray->VDeviceType)
756 for(i = 0; i < pArray->u.array.bArnMember; i++)
757 if(pArray->u.array.pMember[i]->VDeviceCapacity < capacity)
758 capacity = pArray->u.array.pMember[i]->VDeviceCapacity;
762 capacity &= ~(pArray->u.array.bStripeWitch - 1);
764 for(i = 0; i < pArray->u.array.bArnMember; i++)
765 if (mIsArray(pArray->u.array.pMember[i]))
766 pArray->u.array.pMember[i]->VDeviceCapacity = capacity;
767 pArray->VDeviceCapacity = capacity * pArray->u.array.bArnMember;
771 pArray->VDeviceCapacity = MIN(pArray->u.array.pMember[0]->VDeviceCapacity,
772 pArray->u.array.pMember[1]->VDeviceCapacity);
776 for(i = 0; i < pArray->u.array.bArnMember; i++)
777 pArray->VDeviceCapacity += pArray->u.array.pMember[i]->VDeviceCapacity
785 for(i = 0; i < pArray->u.array.bArnMember; i++)
786 if(pArray->u.array.pMember[i]->VDeviceCapacity < capacity)
787 capacity = pArray->u.array.pMember[i]->VDeviceCapacity;
788 pArray->VDeviceCapacity = rounddown2(capacity, pArray->u.array.bStripeWitch) *
789 (pArray->u.array.bArnMember - 1);
796 pArray->pfnSendCommand = pfnSendCommand[pArray->VDeviceType];
797 pArray->pfnDeviceFailed = fOsDiskFailed;
798 SyncArrayInfo(pArray);
800 if (!pArray->u.array.rf_duplicate_and_created)
801 RegisterVDevice(pArray);
802 return VDEV_TO_ID(pArray);
805 for(i = 0; i < pArray->u.array.bArnMember; i++)
807 pChild = pArray->u.array.pMember[i];
811 mArFreeArrayTable(pArray);
912 PVDevice pArray = ID_TO_VDEV(idArray);
916 if(check_VDevice_valid(pArray) || check_VDevice_valid(pDisk)) return -1;
917 if(!pArray->u.array.rf_broken) return -1;
919 if(pArray->VDeviceType != VD_RAID_1 && pArray->VDeviceType != VD_RAID_5)
926 if (pArray->vf_format_v2 && pArray->VDeviceType==VD_RAID_1 &&
927 pArray->u.array.pMember[0] &&
928 mIsArray(pArray->u.array.pMember[0]))
937 Capacity = pArray->VDeviceCapacity / (pArray->u.array.bArnMember - 1);
939 if (pArray->vf_format_v2) {
945 if (pArray->pVBus!=_vbus_p) { HPT_ASSERT(0); return -1;}
947 for(i = 0; i < pArray->u.array.bArnMember; i++)
948 if((pArray->u.array.pMember[i] == 0) || !pArray->u.array.pMember[i]->vf_online)
950 if(pArray->u.array.pMember[i] != NULL)
951 pArray->u.array.pMember[i]->pParent = NULL;
952 pArray->u.array.pMember[i] = pDisk;
961 pDisk->pParent = pArray;
962 if (pArray->VDeviceType==VD_RAID_5) pDisk->vf_cache_disk = 1;
963 pDisk->pfnDeviceFailed = pfnDeviceFailed[pArray->VDeviceType];
964 if (pArray->vf_format_v2) {
969 pArray->u.array.bArRealnMember++;
970 if(pArray->u.array.bArnMember == pArray->u.array.bArRealnMember)
972 pArray->u.array.rf_need_rebuild = 1;
973 pArray->u.array.RebuildSectors = 0;
974 pArray->u.array.rf_auto_rebuild = 1;
975 pArray->u.array.rf_broken = 0;
977 pArray->u.array.RebuildSectors = 0;
980 while (pArray->pParent) pArray = pArray->pParent;
981 pArray->u.array.dArStamp = GetStamp();
982 SyncArrayInfo(pArray);