[
https://issues.apache.org/jira/browse/CLOUDSTACK-8819?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14738799#comment-14738799
]
ASF GitHub Bot commented on CLOUDSTACK-8819:
--------------------------------------------
Github user wido commented on a diff in the pull request:
https://github.com/apache/cloudstack/pull/795#discussion_r39164669
--- Diff: utils/src/main/java/com/cloud/utils/storage/QCOW2Utils.java ---
@@ -0,0 +1,60 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+//
+
+package com.cloud.utils.storage;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import com.cloud.utils.NumbersUtil;
+
+public final class QCOW2Utils {
+ private static final int VIRTUALSIZE_HEADER_LOCATION = 24;
+ private static final int VIRTUALSIZE_HEADER_LENGTH = 8;
+
+ /**
+ * Private constructor -> This utility class cannot be instantiated.
+ */
+ private QCOW2Utils() {}
+
+ /**
+ * @return the header location of the virtual size field.
+ */
+ public static int getVirtualSizeHeaderLocation() {
+ return VIRTUALSIZE_HEADER_LOCATION;
+ }
+
+ /**
+ * @param inputStream The QCOW2 object in stream format.
+ * @return The virtual size of the QCOW2 object.
+ */
+ public static long getVirtualSize(InputStream inputStream) throws
IOException {
+ byte[] b = new byte[8];
+
+ if (inputStream.skip(VIRTUALSIZE_HEADER_LOCATION) !=
VIRTUALSIZE_HEADER_LOCATION) {
+ throw new IOException("Unable to skip to the virtual size
header");
+ }
+
+ if (inputStream.read(b) != 8) {
--- End diff --
Should you use VIRTUALSIZE_HEADER_LENGTH here?
> Virtual Template size is not correct when using S3 as image store.
> ------------------------------------------------------------------
>
> Key: CLOUDSTACK-8819
> URL: https://issues.apache.org/jira/browse/CLOUDSTACK-8819
> Project: CloudStack
> Issue Type: Bug
> Security Level: Public(Anyone can view this level - this is the
> default.)
> Components: Secondary Storage
> Reporter: Boris Schrijver
> Assignee: Boris Schrijver
>
> The virtual size is the same as the physical size of the template. See:
> https://github.com/apache/cloudstack/blob/master/services/secondary-storage/server/src/org/apache/cloudstack/storage/template/DownloadManagerImpl.java#L300
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)