#include "util.h"
#include "sparse-endian.h"
#include "qcow2-util.h"
+#include "btrfs-util.h"
#define QCOW2_MAGIC 0x514649fb
void *buffer) {
ssize_t l;
+ int r;
+
+ r = btrfs_clone_range(sfd, soffset, dfd, doffset, cluster_size);
+ if (r >= 0)
+ return r;
l = pread(sfd, buffer, cluster_size, soffset);
if (l < 0)
uint64_t sz, csize_shift, csize_mask;
if (!compressed)
- return -ENOTSUP;
+ return -EOPNOTSUPP;
csize_shift = 64 - 2 - (HEADER_CLUSTER_BITS(header) - 8);
csize_mask = (1ULL << (HEADER_CLUSTER_BITS(header) - 8)) - 1;
if (HEADER_VERSION(header) != 2 &&
HEADER_VERSION(header) != 3)
- return -ENOTSUP;
+ return -EOPNOTSUPP;
if (HEADER_CRYPT_METHOD(header) != 0)
- return -ENOTSUP;
+ return -EOPNOTSUPP;
if (HEADER_CLUSTER_BITS(header) < 9) /* 512K */
return -EBADMSG;
if (HEADER_VERSION(header) == 3) {
if (header->incompatible_features != 0)
- return -ENOTSUP;
+ return -EOPNOTSUPP;
if (HEADER_HEADER_LENGTH(header) < sizeof(Header))
return -EBADMSG;