From: "Darrick J. Wong" <darrick.wong@oracle.com>
To: Eric Sandeen <sandeen@redhat.com>
Cc: linux-xfs <linux-xfs@vger.kernel.org>
Subject: Re: [PATCH] xfsprogs: move custom interface definitions out of xfs_fs.h
Date: Thu, 6 Aug 2020 12:52:42 -0700 [thread overview]
Message-ID: <20200806195242.GC6096@magnolia> (raw)
In-Reply-To: <df0d78d0-eada-374a-2720-897fb75bd34b@redhat.com>
On Thu, Aug 06, 2020 at 12:36:48PM -0700, Eric Sandeen wrote:
> 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>
Hooray for shoving all the cobwebs behind the stereo! :)
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
--D
> ---
>
> 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
> /*
>
next prev parent reply other threads:[~2020-08-06 19:52 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-06 19:36 [PATCH] xfsprogs: move custom interface definitions out of xfs_fs.h Eric Sandeen
2020-08-06 19:52 ` Darrick J. Wong [this message]
2020-08-17 6:56 ` Christoph Hellwig
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200806195242.GC6096@magnolia \
--to=darrick.wong@oracle.com \
--cc=linux-xfs@vger.kernel.org \
--cc=sandeen@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox