Lines Matching refs:pArray

568 	PVDevice pArray,pChild;
589 mArGetArrayTable(pArray);
590 if(!pArray) return INVALID_DEVICEID;
595 pArray->VDeviceType = VD_JBOD;
601 pArray->VDeviceType = VD_RAID_0;
607 pArray->VDeviceType = VD_RAID_5;
610 pArray->u.array.rf_need_rebuild = 1;
616 pArray->VDeviceType = VD_RAID_1;
618 pArray->u.array.bArnMember = pParam->nDisk;
619 pArray->u.array.bArRealnMember = pParam->nDisk;
620 pArray->u.array.bArBlockSizeShift = pParam->BlockSizeShift;
621 pArray->u.array.bStripeWitch = (1 << pParam->BlockSizeShift);
622 pArray->u.array.dArStamp = Stamp;
624 pArray->u.array.rf_need_sync = 1;
625 pArray->u.array.rf_newly_created = 1;
628 (pArray->VDeviceType == VD_RAID_1))
630 pArray->u.array.rf_newly_created = 0; /* R1 shall still be accessible */
631 pArray->u.array.rf_need_rebuild = 1;
632 pArray->u.array.rf_auto_rebuild = 1;
633 pArray->u.array.rf_duplicate_and_create = 1;
640 pArray->u.array.RebuildSectors = pArray->u.array.rf_need_rebuild? 0 : MAX_LBA_T;
642 memcpy(pArray->u.array.ArrayName, pParam->ArrayName, MAX_ARRAY_NAME);
646 pArray->u.array.pMember[i] = ID_TO_VDEV(pParam->Members[i]);
647 pArray->u.array.pMember[i]->bSerialNumber = i;
648 pArray->u.array.pMember[i]->pParent = pArray;
652 pArray->VDeviceType!=VD_RAID_1 ||
654 UnregisterVDevice(pArray->u.array.pMember[i]);
656 if(pArray->VDeviceType == VD_RAID_5)
657 pArray->u.array.pMember[i]->vf_cache_disk = 1;
689 pArray->u.array.pMember[i] = pChild;
693 pChild->pParent = pArray;
701 pArray->VDeviceType = VD_RAID_0;
703 pArray->u.array.bArnMember = pParam->nDisk / 2;
704 pArray->u.array.bArRealnMember = pParam->nDisk / 2;
705 pArray->u.array.bArBlockSizeShift = pParam->BlockSizeShift;
706 pArray->u.array.bStripeWitch = (1 << pParam->BlockSizeShift);
707 pArray->u.array.dArStamp = Stamp;
709 pArray->u.array.rf_need_sync = 1;
710 pArray->u.array.rf_newly_created = 1;
712 memcpy(pArray->u.array.ArrayName, pParam->ArrayName, MAX_ARRAY_NAME);
720 for(i = 0; i < pArray->u.array.bArnMember; i++)
721 pArray->u.array.pMember[i]->pfnDeviceFailed = pfnDeviceFailed[pArray->VDeviceType];
724 (pArray->VDeviceType == VD_RAID_1))
726 pArray->vf_bootmark = pArray->u.array.pMember[0]->vf_bootmark;
727 pArray->vf_bootable = pArray->u.array.pMember[0]->vf_bootable;
728 pArray->u.array.pMember[0]->vf_bootable = 0;
729 pArray->u.array.pMember[0]->vf_bootmark = 0;
731 _vbus_p->pVDevice[Loca] = pArray;
733 pArray->u.array.rf_duplicate_and_created = 1;
734 pArray->pVBus = _vbus_p;
748 pArray->vf_online = 1;
749 pArray->pParent = NULL;
751 switch(pArray->VDeviceType)
754 for(i = 0; i < pArray->u.array.bArnMember; i++)
755 if(pArray->u.array.pMember[i]->VDeviceCapacity < capacity)
756 capacity = pArray->u.array.pMember[i]->VDeviceCapacity;
760 capacity &= ~(pArray->u.array.bStripeWitch - 1);
762 for(i = 0; i < pArray->u.array.bArnMember; i++)
763 if (mIsArray(pArray->u.array.pMember[i]))
764 pArray->u.array.pMember[i]->VDeviceCapacity = capacity;
765 pArray->VDeviceCapacity = capacity * pArray->u.array.bArnMember;
769 pArray->VDeviceCapacity = MIN(pArray->u.array.pMember[0]->VDeviceCapacity,
770 pArray->u.array.pMember[1]->VDeviceCapacity);
774 for(i = 0; i < pArray->u.array.bArnMember; i++)
775 pArray->VDeviceCapacity += pArray->u.array.pMember[i]->VDeviceCapacity
783 for(i = 0; i < pArray->u.array.bArnMember; i++)
784 if(pArray->u.array.pMember[i]->VDeviceCapacity < capacity)
785 capacity = pArray->u.array.pMember[i]->VDeviceCapacity;
786 pArray->VDeviceCapacity = rounddown2(capacity, pArray->u.array.bStripeWitch) *
787 (pArray->u.array.bArnMember - 1);
794 pArray->pfnSendCommand = pfnSendCommand[pArray->VDeviceType];
795 pArray->pfnDeviceFailed = fOsDiskFailed;
796 SyncArrayInfo(pArray);
798 if (!pArray->u.array.rf_duplicate_and_created)
799 RegisterVDevice(pArray);
800 return VDEV_TO_ID(pArray);
803 for(i = 0; i < pArray->u.array.bArnMember; i++)
805 pChild = pArray->u.array.pMember[i];
809 mArFreeArrayTable(pArray);
910 PVDevice pArray = ID_TO_VDEV(idArray);
914 if(check_VDevice_valid(pArray) || check_VDevice_valid(pDisk)) return -1;
915 if(!pArray->u.array.rf_broken) return -1;
917 if(pArray->VDeviceType != VD_RAID_1 && pArray->VDeviceType != VD_RAID_5)
924 if (pArray->vf_format_v2 && pArray->VDeviceType==VD_RAID_1 &&
925 pArray->u.array.pMember[0] &&
926 mIsArray(pArray->u.array.pMember[0]))
935 Capacity = pArray->VDeviceCapacity / (pArray->u.array.bArnMember - 1);
937 if (pArray->vf_format_v2) {
943 if (pArray->pVBus!=_vbus_p) { HPT_ASSERT(0); return -1;}
945 for(i = 0; i < pArray->u.array.bArnMember; i++)
946 if((pArray->u.array.pMember[i] == 0) || !pArray->u.array.pMember[i]->vf_online)
948 if(pArray->u.array.pMember[i] != NULL)
949 pArray->u.array.pMember[i]->pParent = NULL;
950 pArray->u.array.pMember[i] = pDisk;
959 pDisk->pParent = pArray;
960 if (pArray->VDeviceType==VD_RAID_5) pDisk->vf_cache_disk = 1;
961 pDisk->pfnDeviceFailed = pfnDeviceFailed[pArray->VDeviceType];
962 if (pArray->vf_format_v2) {
967 pArray->u.array.bArRealnMember++;
968 if(pArray->u.array.bArnMember == pArray->u.array.bArRealnMember)
970 pArray->u.array.rf_need_rebuild = 1;
971 pArray->u.array.RebuildSectors = 0;
972 pArray->u.array.rf_auto_rebuild = 1;
973 pArray->u.array.rf_broken = 0;
975 pArray->u.array.RebuildSectors = 0;
978 while (pArray->pParent) pArray = pArray->pParent;
979 pArray->u.array.dArStamp = GetStamp();
980 SyncArrayInfo(pArray);