According to ioctl_ficlonerange(2)
These ioctl operations [FICLONE and FICLONERANGE] first
appeared in Linux 4.5. They were previously known as
BTRFS_IOC_CLONE and BTRFS_IOC_CLONE_RANGE, and were private
to Btrfs.
We no longer target any distro that comes with a kernel older
than 4.5, so we can stop looking for the btrfs and xfs
specific versions of the constant and just use the generic
version directly.
Signed-off-by: Andrea Bolognani <abologna(a)redhat.com>
---
src/storage/storage_util.c | 14 ++------------
1 file changed, 2 insertions(+), 12 deletions(-)
diff --git a/src/storage/storage_util.c b/src/storage/storage_util.c
index 03874d6ca3..21388cd255 100644
--- a/src/storage/storage_util.c
+++ b/src/storage/storage_util.c
@@ -43,16 +43,6 @@
# include <selinux/selinux.h>
#endif
-#ifdef FICLONE
-# define REFLINK_IOC_CLONE FICLONE
-#elif WITH_LINUX_BTRFS_H
-# include <linux/btrfs.h>
-# define REFLINK_IOC_CLONE BTRFS_IOC_CLONE
-#elif WITH_XFS_XFS_H
-# include <xfs/xfs.h>
-# define REFLINK_IOC_CLONE XFS_IOC_CLONE
-#endif
-
#include "datatypes.h"
#include "virerror.h"
#include "viralloc.h"
@@ -107,11 +97,11 @@ virStorageBackendNamespaceInit(int poolType,
* Perform the O(1) btrfs clone operation, if possible.
* Upon success, return 0. Otherwise, return -1 and set errno.
*/
-#ifdef REFLINK_IOC_CLONE
+#ifdef __linux__
static inline int
reflinkCloneFile(int dest_fd, int src_fd)
{
- return ioctl(dest_fd, REFLINK_IOC_CLONE, src_fd);
+ return ioctl(dest_fd, FICLONE, src_fd);
}
#else
static inline int
--
2.31.1