]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfsprogs: move custom interface definitions out of xfs_fs.h
authorEric Sandeen <sandeen@redhat.com>
Tue, 25 Aug 2020 22:07:20 +0000 (18:07 -0400)
committerEric Sandeen <sandeen@sandeen.net>
Tue, 25 Aug 2020 22:07:20 +0000 (18:07 -0400)
There are several definitions and structures present in the userspace
copy of libxfs/xfs_fs.h which support older, custom xfs interfaces
which are now common definitions in the vfs.

Move them into their own compat header to minimize the shared file
differences.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
include/Makefile
include/xfs.h
include/xfs_fs_compat.h [new file with mode: 0644]
libxfs/xfs_fs.h

index a80867e402178265b8db0b763ba768132e14c337..3031fb5ca3ad4b96bd4f40cd5f6e31879e3ced5e 100644 (file)
@@ -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
index f673d92efa5f933ecb38599e38d2dc7768db7c40..af0d36cef361f0c40678b8be3202c392fa20a9e9 100644 (file)
@@ -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 (file)
index 0000000..154a802
--- /dev/null
@@ -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__ */
index 36fae384cdaa422f8f770072d8bb951890ac2f8e..84bcffa8775315891385bd984e8b8181d60fd1eb 100644 (file)
@@ -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
 /*