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);
        }