[PATCH 099/145] xfs: support FS_XFLAG_REFLINK on reflink filesystems
Darrick J. Wong
darrick.wong at oracle.com
Thu Jun 16 20:41:12 CDT 2016
Add support for reporting the "reflink" inode flag in the XFS-specific
getxflags ioctl, and allow the user to clear the flag if file size is
zero.
v2: Move the reflink flag out of the way of the DAX flag, and add the
new cowextsize flag.
v3: do not report (or allow changes to) FL_NOCOW_FL, since we don't
support a flag to prevent CoWing and the reflink flag is a poor
proxy. We'll try to design away the need for the NOCOW flag.
Signed-off-by: Darrick J. Wong <darrick.wong at oracle.com>
---
include/darwin.h | 2 ++
include/freebsd.h | 2 ++
include/irix.h | 2 ++
include/linux.h | 2 ++
4 files changed, 8 insertions(+)
diff --git a/include/darwin.h b/include/darwin.h
index 2935b4c..abb2a22 100644
--- a/include/darwin.h
+++ b/include/darwin.h
@@ -314,6 +314,8 @@ struct fsxattr {
#define FS_XFLAG_NODEFRAG 0x00002000 /* do not defragment */
#define FS_XFLAG_FILESTREAM 0x00004000 /* use filestream allocator */
#define FS_XFLAG_DAX 0x00008000 /* use DAX for IO */
+#define FS_XFLAG_REFLINK 0x00010000 /* file is reflinked */
+#define FS_XFLAG_COWEXTSIZE 0x00020000 /* CoW extent size allocator hint */
#define FS_XFLAG_HASATTR 0x80000000 /* no DIFLAG for this */
#define FS_IOC_FSGETXATTR _IOR ('X', 31, struct fsxattr)
diff --git a/include/freebsd.h b/include/freebsd.h
index 3feca07..fc58a74 100644
--- a/include/freebsd.h
+++ b/include/freebsd.h
@@ -204,6 +204,8 @@ struct fsxattr {
#define FS_XFLAG_NODEFRAG 0x00002000 /* do not defragment */
#define FS_XFLAG_FILESTREAM 0x00004000 /* use filestream allocator */
#define FS_XFLAG_DAX 0x00008000 /* use DAX for IO */
+#define FS_XFLAG_REFLINK 0x00010000 /* file is reflinked */
+#define FS_XFLAG_COWEXTSIZE 0x00020000 /* CoW extent size allocator hint */
#define FS_XFLAG_HASATTR 0x80000000 /* no DIFLAG for this */
#define FS_IOC_FSGETXATTR _IOR ('X', 31, struct fsxattr)
diff --git a/include/irix.h b/include/irix.h
index 45c8594..c4d25b5 100644
--- a/include/irix.h
+++ b/include/irix.h
@@ -449,6 +449,8 @@ struct fsxattr {
#define FS_XFLAG_NODEFRAG 0x00002000 /* do not defragment */
#define FS_XFLAG_FILESTREAM 0x00004000 /* use filestream allocator */
#define FS_XFLAG_DAX 0x00008000 /* use DAX for IO */
+#define FS_XFLAG_REFLINK 0x00010000 /* file is reflinked */
+#define FS_XFLAG_COWEXTSIZE 0x00020000 /* CoW extent size allocator hint */
#define FS_XFLAG_HASATTR 0x80000000 /* no DIFLAG for this */
#define FS_IOC_FSGETXATTR F_FSGETXATTR
diff --git a/include/linux.h b/include/linux.h
index cd4b3eb..d47a29c 100644
--- a/include/linux.h
+++ b/include/linux.h
@@ -207,6 +207,8 @@ struct fsxattr {
#define FS_XFLAG_NODEFRAG 0x00002000 /* do not defragment */
#define FS_XFLAG_FILESTREAM 0x00004000 /* use filestream allocator */
#define FS_XFLAG_DAX 0x00008000 /* use DAX for IO */
+#define FS_XFLAG_REFLINK 0x00010000 /* file is reflinked */
+#define FS_XFLAG_COWEXTSIZE 0x00020000 /* CoW extent size allocator hint */
#define FS_XFLAG_HASATTR 0x80000000 /* no DIFLAG for this */
#define FS_IOC_FSGETXATTR _IOR ('X', 31, struct fsxattr)
More information about the xfs
mailing list