public static DiskGroupLockResult ExtendDynamicVolume(List <DynamicDisk> diskGroup, DynamicVolume volume, long numberOfAdditionalExtentSectors) { if (volume is StripedVolume) { numberOfAdditionalExtentSectors -= numberOfAdditionalExtentSectors % ((StripedVolume)volume).SectorsPerStripe; } if (volume is Raid5Volume) { numberOfAdditionalExtentSectors -= numberOfAdditionalExtentSectors % ((Raid5Volume)volume).SectorsPerStripe; } DiskGroupLockResult result = DiskGroupHelper.LockDiskGroup(diskGroup); if (result != DiskGroupLockResult.Success) { return(result); } DiskGroupDatabase database = DiskGroupDatabase.ReadFromDisks(diskGroup, volume.DiskGroupGuid); ExtendHelper.ExtendDynamicVolume((DynamicVolume)volume, numberOfAdditionalExtentSectors, database); DiskGroupHelper.UnlockDiskGroup(diskGroup); return(DiskGroupLockResult.Success); }