提交 f23814e0 编写于 作者: C Cole Robinson

storage: Don't try sparse detection if writing to block device.

We don't gain any space savings, so skip the detection to speed up
the cloning operation.
上级 74713570
......@@ -108,7 +108,8 @@ virStorageBackendCopyToFD(virConnectPtr conn,
virStorageVolDefPtr vol,
virStorageVolDefPtr inputvol,
int fd,
unsigned long long *total)
unsigned long long *total,
int is_dest_file)
{
int inputfd = -1;
int amtread = -1;
......@@ -157,7 +158,7 @@ virStorageBackendCopyToFD(virConnectPtr conn,
int interval = ((512 > amtleft) ? amtleft : 512);
int offset = amtread - amtleft;
if (memcmp(buf+offset, zerobuf, interval) == 0) {
if (is_dest_file && memcmp(buf+offset, zerobuf, interval) == 0) {
if (lseek(fd, interval, SEEK_CUR) < 0) {
virReportSystemError(conn, errno,
_("cannot extend file '%s'"),
......@@ -212,7 +213,8 @@ virStorageBackendCreateBlockFrom(virConnectPtr conn,
remain = vol->allocation;
if (inputvol) {
int res = virStorageBackendCopyToFD(conn, vol, inputvol, fd, &remain);
int res = virStorageBackendCopyToFD(conn, vol, inputvol,
fd, &remain, 0);
if (res < 0)
goto cleanup;
}
......@@ -264,7 +266,8 @@ virStorageBackendCreateRaw(virConnectPtr conn,
remain = vol->allocation;
if (inputvol) {
int res = virStorageBackendCopyToFD(conn, vol, inputvol, fd, &remain);
int res = virStorageBackendCopyToFD(conn, vol, inputvol,
fd, &remain, 1);
if (res < 0)
goto cleanup;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册