diff --git a/include/Makefile b/include/Makefile
index a80867e4..3031fb5c 100644
--- a/include/Makefile
+++ b/include/Makefile
@@ -35,6 +35,7 @@ HFILES = handle.h \
 	linux.h \
 	xfs.h \
 	xqm.h \
+	xfs_fs_compat.h \
 	xfs_arch.h
 
 LSRCFILES = platform_defs.h.in builddefs.in buildmacros buildrules install-sh
diff --git a/include/xfs.h b/include/xfs.h
index f673d92e..af0d36ce 100644
--- a/include/xfs.h
+++ b/include/xfs.h
@@ -39,6 +39,8 @@ extern int xfs_assert_largefile[sizeof(off_t)-8];
 #endif
 
 #include <xfs/xfs_types.h>
+/* Include deprecated/compat pre-vfs xfs-specific symbols */
+#include <xfs/xfs_fs_compat.h>
 #include <xfs/xfs_fs.h>
 
 #endif	/* __XFS_H__ */
diff --git a/include/xfs_fs_compat.h b/include/xfs_fs_compat.h
new file mode 100644
index 00000000..154a802d
--- /dev/null
+++ b/include/xfs_fs_compat.h
@@ -0,0 +1,88 @@
+/* SPDX-License-Identifier: LGPL-2.1 */
+/*
+ * Copyright (c) 1995-2005 Silicon Graphics, Inc.
+ * All Rights Reserved.
+ */
+#ifndef __XFS_FS_COMPAT_H__
+#define __XFS_FS_COMPAT_H__
+
+/*
+ * Backwards-compatible definitions and structures for public kernel interfaces
+ */
+
+/*
+ * Flags for the bs_xflags/fsx_xflags field in XFS_IOC_FS[GS]ETXATTR[A]
+ * These are for backwards compatibility only. New code should
+ * use the kernel [4.5 onwards] defined FS_XFLAG_* definitions directly.
+ */
+#define	XFS_XFLAG_REALTIME	FS_XFLAG_REALTIME
+#define	XFS_XFLAG_PREALLOC	FS_XFLAG_PREALLOC
+#define	XFS_XFLAG_IMMUTABLE	FS_XFLAG_IMMUTABLE
+#define	XFS_XFLAG_APPEND	FS_XFLAG_APPEND
+#define	XFS_XFLAG_SYNC		FS_XFLAG_SYNC
+#define	XFS_XFLAG_NOATIME	FS_XFLAG_NOATIME
+#define	XFS_XFLAG_NODUMP	FS_XFLAG_NODUMP
+#define	XFS_XFLAG_RTINHERIT	FS_XFLAG_RTINHERIT
+#define	XFS_XFLAG_PROJINHERIT	FS_XFLAG_PROJINHERIT
+#define	XFS_XFLAG_NOSYMLINKS	FS_XFLAG_NOSYMLINKS
+#define	XFS_XFLAG_EXTSIZE	FS_XFLAG_EXTSIZE
+#define	XFS_XFLAG_EXTSZINHERIT	FS_XFLAG_EXTSZINHERIT
+#define	XFS_XFLAG_NODEFRAG	FS_XFLAG_NODEFRAG
+#define	XFS_XFLAG_FILESTREAM	FS_XFLAG_FILESTREAM
+#define	XFS_XFLAG_HASATTR	FS_XFLAG_HASATTR
+
+/*
+ * Don't use this.
+ * Use struct file_clone_range
+ */
+struct xfs_clone_args {
+	__s64 src_fd;
+	__u64 src_offset;
+	__u64 src_length;
+	__u64 dest_offset;
+};
+
+/*
+ * Don't use these.
+ * Use FILE_DEDUPE_RANGE_SAME / FILE_DEDUPE_RANGE_DIFFERS
+ */
+#define XFS_EXTENT_DATA_SAME	0
+#define XFS_EXTENT_DATA_DIFFERS	1
+
+/* Don't use this. Use file_dedupe_range_info */
+struct xfs_extent_data_info {
+	__s64 fd;		/* in - destination file */
+	__u64 logical_offset;	/* in - start of extent in destination */
+	__u64 bytes_deduped;	/* out - total # of bytes we were able
+				 * to dedupe from this file */
+	/* status of this dedupe operation:
+	 * < 0 for error
+	 * == XFS_EXTENT_DATA_SAME if dedupe succeeds
+	 * == XFS_EXTENT_DATA_DIFFERS if data differs
+	 */
+	__s32 status;		/* out - see above description */
+	__u32 reserved;
+};
+
+/*
+ * Don't use this.
+ * Use struct file_dedupe_range
+ */
+struct xfs_extent_data {
+	__u64 logical_offset;	/* in - start of extent in source */
+	__u64 length;		/* in - length of extent */
+	__u16 dest_count;	/* in - total elements in info array */
+	__u16 reserved1;
+	__u32 reserved2;
+	struct xfs_extent_data_info info[0];
+};
+
+/*
+ * Don't use these.
+ * Use FICLONE/FICLONERANGE/FIDEDUPERANGE
+ */
+#define XFS_IOC_CLONE		 _IOW (0x94, 9, int)
+#define XFS_IOC_CLONE_RANGE	 _IOW (0x94, 13, struct xfs_clone_args)
+#define XFS_IOC_FILE_EXTENT_SAME _IOWR(0x94, 54, struct xfs_extent_data)
+
+#endif	/* __XFS_FS_COMPAT_H__ */
diff --git a/libxfs/xfs_fs.h b/libxfs/xfs_fs.h
index 36fae384..84bcffa8 100644
--- a/libxfs/xfs_fs.h
+++ b/libxfs/xfs_fs.h
@@ -23,27 +23,6 @@ struct dioattr {
 };
 #endif
 
-/*
- * Flags for the bs_xflags/fsx_xflags field in XFS_IOC_FS[GS]ETXATTR[A]
- * These are for backwards compatibility only. New code should
- * use the kernel [4.5 onwards] defined FS_XFLAG_* definitions directly.
- */
-#define	XFS_XFLAG_REALTIME	FS_XFLAG_REALTIME
-#define	XFS_XFLAG_PREALLOC	FS_XFLAG_PREALLOC
-#define	XFS_XFLAG_IMMUTABLE	FS_XFLAG_IMMUTABLE
-#define	XFS_XFLAG_APPEND	FS_XFLAG_APPEND
-#define	XFS_XFLAG_SYNC		FS_XFLAG_SYNC
-#define	XFS_XFLAG_NOATIME	FS_XFLAG_NOATIME
-#define	XFS_XFLAG_NODUMP	FS_XFLAG_NODUMP
-#define	XFS_XFLAG_RTINHERIT	FS_XFLAG_RTINHERIT
-#define	XFS_XFLAG_PROJINHERIT	FS_XFLAG_PROJINHERIT
-#define	XFS_XFLAG_NOSYMLINKS	FS_XFLAG_NOSYMLINKS
-#define	XFS_XFLAG_EXTSIZE	FS_XFLAG_EXTSIZE
-#define	XFS_XFLAG_EXTSZINHERIT	FS_XFLAG_EXTSZINHERIT
-#define	XFS_XFLAG_NODEFRAG	FS_XFLAG_NODEFRAG
-#define	XFS_XFLAG_FILESTREAM	FS_XFLAG_FILESTREAM
-#define	XFS_XFLAG_HASATTR	FS_XFLAG_HASATTR
-
 /*
  * Structure for XFS_IOC_GETBMAP.
  * On input, fill in bmv_offset and bmv_length of the first structure
@@ -858,47 +837,6 @@ struct xfs_scrub_metadata {
 #define XFS_IOC_INUMBERS	     _IOR ('X', 128, struct xfs_inumbers_req)
 /*	XFS_IOC_GETFSUUID ---------- deprecated 140	 */
 
-/* reflink ioctls; these MUST match the btrfs ioctl definitions */
-/* from struct btrfs_ioctl_clone_range_args */
-struct xfs_clone_args {
-	__s64 src_fd;
-	__u64 src_offset;
-	__u64 src_length;
-	__u64 dest_offset;
-};
-
-/* extent-same (dedupe) ioctls; these MUST match the btrfs ioctl definitions */
-#define XFS_EXTENT_DATA_SAME	0
-#define XFS_EXTENT_DATA_DIFFERS	1
-
-/* from struct btrfs_ioctl_file_extent_same_info */
-struct xfs_extent_data_info {
-	__s64 fd;		/* in - destination file */
-	__u64 logical_offset;	/* in - start of extent in destination */
-	__u64 bytes_deduped;	/* out - total # of bytes we were able
-				 * to dedupe from this file */
-	/* status of this dedupe operation:
-	 * < 0 for error
-	 * == XFS_EXTENT_DATA_SAME if dedupe succeeds
-	 * == XFS_EXTENT_DATA_DIFFERS if data differs
-	 */
-	__s32 status;		/* out - see above description */
-	__u32 reserved;
-};
-
-/* from struct btrfs_ioctl_file_extent_same_args */
-struct xfs_extent_data {
-	__u64 logical_offset;	/* in - start of extent in source */
-	__u64 length;		/* in - length of extent */
-	__u16 dest_count;	/* in - total elements in info array */
-	__u16 reserved1;
-	__u32 reserved2;
-	struct xfs_extent_data_info info[0];
-};
-
-#define XFS_IOC_CLONE		 _IOW (0x94, 9, int)
-#define XFS_IOC_CLONE_RANGE	 _IOW (0x94, 13, struct xfs_clone_args)
-#define XFS_IOC_FILE_EXTENT_SAME _IOWR(0x94, 54, struct xfs_extent_data)
 
 #ifndef HAVE_BBMACROS
 /*
