diff --git a/pkg/uploadserver/uploadserver.go b/pkg/uploadserver/uploadserver.go index 6bdd376ae9..16d2796986 100644 --- a/pkg/uploadserver/uploadserver.go +++ b/pkg/uploadserver/uploadserver.go @@ -485,7 +485,11 @@ func untarToBlockdev(stream io.Reader, dest string) error { case header == nil: continue } - if header.Typeflag == tar.TypeGNUSparse && strings.Contains(header.Name, common.DiskImageName) { + if !strings.Contains(header.Name, common.DiskImageName) { + continue + } + switch header.Typeflag { + case tar.TypeReg, tar.TypeGNUSparse: klog.Infof("Untaring %d bytes to %s", header.Size, dest) f, err := os.OpenFile(dest, os.O_APPEND|os.O_WRONLY, os.ModeDevice|os.ModePerm) if err != nil { diff --git a/tests/cloner_test.go b/tests/cloner_test.go index efcf5ec60f..3c1ad7bbff 100644 --- a/tests/cloner_test.go +++ b/tests/cloner_test.go @@ -430,7 +430,7 @@ var _ = Describe("all clone tests", func() { completeClone(f, f.Namespace, targetPvc, filepath.Join(testBaseDir, testFile), fillDataFSMD5sum, "") }) - It("[test_id:cnv-5569]Should clone data from filesystem to block", func() { + DescribeTable("Should clone data from filesystem to block", func(preallocate bool) { if !f.IsBlockVolumeStorageClassAvailable() { Skip("Storage Class for block volume is not available") } @@ -445,6 +445,9 @@ var _ = Describe("all clone tests", func() { Expect(err).ToNot(HaveOccurred()) targetDV := utils.NewDataVolumeCloneToBlockPV("target-dv", "1Gi", sourcePvc.Namespace, sourcePvc.Name, f.BlockSCName) + if preallocate { + targetDV.Spec.Preallocation = ptr.To[bool](true) + } targetDataVolume, err := utils.CreateDataVolumeFromDefinition(f.CdiClient, f.Namespace.Name, targetDV) Expect(err).ToNot(HaveOccurred()) targetPvc, err := utils.WaitForPVC(f.K8sClient, targetDataVolume.Namespace, targetDataVolume.Name) @@ -474,9 +477,12 @@ var _ = Describe("all clone tests", func() { By("Deleting verifier pod") err = utils.DeleteVerifierPod(f.K8sClient, f.Namespace.Name) Expect(err).ToNot(HaveOccurred()) - }) + }, + Entry("[test_id:5569]regular target", false), + Entry("[test_id:XXXX]preallocated target", true), + ) - It("[test_id:cnv-5570]Should clone data from block to filesystem", func() { + It("[test_id:5570]Should clone data from block to filesystem", func() { if !f.IsBlockVolumeStorageClassAvailable() { Skip("Storage Class for block volume is not available") }