From aef5090db536d9072c2faeb7141cace5563dc641 Mon Sep 17 00:00:00 2001 From: Martin Date: Sat, 20 Oct 2018 13:42:43 +0200 Subject: [PATCH] Fix ReFS reflink --- urbackupcommon/os_functions_win.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/urbackupcommon/os_functions_win.cpp b/urbackupcommon/os_functions_win.cpp index 3a7cd520..354a1a68 100644 --- a/urbackupcommon/os_functions_win.cpp +++ b/urbackupcommon/os_functions_win.cpp @@ -558,12 +558,14 @@ namespace { namespace reflink { +#pragma pack(push, 1) typedef struct _DUPLICATE_EXTENTS_DATA { HANDLE FileHandle; LARGE_INTEGER SourceFileOffset; LARGE_INTEGER TargetFileOffset; LARGE_INTEGER ByteCount; } DUPLICATE_EXTENTS_DATA, *PDUPLICATE_EXTENTS_DATA; +#pragma pack(pop) DWORD FSCTL_DUPLICATE_EXTENTS_TO_FILE = 0x98344; } @@ -657,7 +659,7 @@ bool os_create_reflink(const std::string &linkname, const std::string &fname) reflink_data.TargetFileOffset.QuadPart = reflinked; if (!DeviceIoControl(dest_handle, reflink::FSCTL_DUPLICATE_EXTENTS_TO_FILE, - &reflink_data, sizeof(reflink_data), NULL, 0, NULL, NULL)) + &reflink_data, sizeof(reflink_data), NULL, 0, &ret_bytes, NULL)) { has_error = true; }