]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
xfs: hoist inode flag conversion functions to libxfs
authorDarrick J. Wong <djwong@kernel.org>
Tue, 2 Jul 2024 18:22:32 +0000 (11:22 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Tue, 2 Jul 2024 18:36:55 +0000 (11:36 -0700)
Hoist the inode flag conversion functions into libxfs so that we can
keep them in sync.  Do this by creating a new xfs_inode_util.c file in
libxfs.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
fs/xfs/Makefile
fs/xfs/libxfs/xfs_bmap.c
fs/xfs/libxfs/xfs_inode_util.c [new file with mode: 0644]
fs/xfs/libxfs/xfs_inode_util.h [new file with mode: 0644]
fs/xfs/xfs_inode.c
fs/xfs/xfs_inode.h
fs/xfs/xfs_ioctl.c

index c50447548d6550fb88bb6a25316705419f55ce96..dd692619bed58022e3b857529068c885884e8f92 100644 (file)
@@ -40,6 +40,7 @@ xfs-y                         += $(addprefix libxfs/, \
                                   xfs_iext_tree.o \
                                   xfs_inode_fork.o \
                                   xfs_inode_buf.o \
+                                  xfs_inode_util.o \
                                   xfs_log_rlimit.o \
                                   xfs_ag_resv.o \
                                   xfs_parent.o \
index f889123126d221f06d49684e66d358fada2e0de2..09e3302a4b72faf01b4a280dbfc5a97f87b50a9b 100644 (file)
@@ -39,6 +39,7 @@
 #include "xfs_health.h"
 #include "xfs_bmap_item.h"
 #include "xfs_symlink_remote.h"
+#include "xfs_inode_util.h"
 
 struct kmem_cache              *xfs_bmap_intent_cache;
 
diff --git a/fs/xfs/libxfs/xfs_inode_util.c b/fs/xfs/libxfs/xfs_inode_util.c
new file mode 100644 (file)
index 0000000..ed5e1a9
--- /dev/null
@@ -0,0 +1,124 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2000-2006 Silicon Graphics, Inc.
+ * All Rights Reserved.
+ */
+#include "xfs.h"
+#include "xfs_fs.h"
+#include "xfs_shared.h"
+#include "xfs_format.h"
+#include "xfs_log_format.h"
+#include "xfs_trans_resv.h"
+#include "xfs_sb.h"
+#include "xfs_mount.h"
+#include "xfs_inode.h"
+#include "xfs_inode_util.h"
+
+uint16_t
+xfs_flags2diflags(
+       struct xfs_inode        *ip,
+       unsigned int            xflags)
+{
+       /* can't set PREALLOC this way, just preserve it */
+       uint16_t                di_flags =
+               (ip->i_diflags & XFS_DIFLAG_PREALLOC);
+
+       if (xflags & FS_XFLAG_IMMUTABLE)
+               di_flags |= XFS_DIFLAG_IMMUTABLE;
+       if (xflags & FS_XFLAG_APPEND)
+               di_flags |= XFS_DIFLAG_APPEND;
+       if (xflags & FS_XFLAG_SYNC)
+               di_flags |= XFS_DIFLAG_SYNC;
+       if (xflags & FS_XFLAG_NOATIME)
+               di_flags |= XFS_DIFLAG_NOATIME;
+       if (xflags & FS_XFLAG_NODUMP)
+               di_flags |= XFS_DIFLAG_NODUMP;
+       if (xflags & FS_XFLAG_NODEFRAG)
+               di_flags |= XFS_DIFLAG_NODEFRAG;
+       if (xflags & FS_XFLAG_FILESTREAM)
+               di_flags |= XFS_DIFLAG_FILESTREAM;
+       if (S_ISDIR(VFS_I(ip)->i_mode)) {
+               if (xflags & FS_XFLAG_RTINHERIT)
+                       di_flags |= XFS_DIFLAG_RTINHERIT;
+               if (xflags & FS_XFLAG_NOSYMLINKS)
+                       di_flags |= XFS_DIFLAG_NOSYMLINKS;
+               if (xflags & FS_XFLAG_EXTSZINHERIT)
+                       di_flags |= XFS_DIFLAG_EXTSZINHERIT;
+               if (xflags & FS_XFLAG_PROJINHERIT)
+                       di_flags |= XFS_DIFLAG_PROJINHERIT;
+       } else if (S_ISREG(VFS_I(ip)->i_mode)) {
+               if (xflags & FS_XFLAG_REALTIME)
+                       di_flags |= XFS_DIFLAG_REALTIME;
+               if (xflags & FS_XFLAG_EXTSIZE)
+                       di_flags |= XFS_DIFLAG_EXTSIZE;
+       }
+
+       return di_flags;
+}
+
+uint64_t
+xfs_flags2diflags2(
+       struct xfs_inode        *ip,
+       unsigned int            xflags)
+{
+       uint64_t                di_flags2 =
+               (ip->i_diflags2 & (XFS_DIFLAG2_REFLINK |
+                                  XFS_DIFLAG2_BIGTIME |
+                                  XFS_DIFLAG2_NREXT64));
+
+       if (xflags & FS_XFLAG_DAX)
+               di_flags2 |= XFS_DIFLAG2_DAX;
+       if (xflags & FS_XFLAG_COWEXTSIZE)
+               di_flags2 |= XFS_DIFLAG2_COWEXTSIZE;
+
+       return di_flags2;
+}
+
+uint32_t
+xfs_ip2xflags(
+       struct xfs_inode        *ip)
+{
+       uint32_t                flags = 0;
+
+       if (ip->i_diflags & XFS_DIFLAG_ANY) {
+               if (ip->i_diflags & XFS_DIFLAG_REALTIME)
+                       flags |= FS_XFLAG_REALTIME;
+               if (ip->i_diflags & XFS_DIFLAG_PREALLOC)
+                       flags |= FS_XFLAG_PREALLOC;
+               if (ip->i_diflags & XFS_DIFLAG_IMMUTABLE)
+                       flags |= FS_XFLAG_IMMUTABLE;
+               if (ip->i_diflags & XFS_DIFLAG_APPEND)
+                       flags |= FS_XFLAG_APPEND;
+               if (ip->i_diflags & XFS_DIFLAG_SYNC)
+                       flags |= FS_XFLAG_SYNC;
+               if (ip->i_diflags & XFS_DIFLAG_NOATIME)
+                       flags |= FS_XFLAG_NOATIME;
+               if (ip->i_diflags & XFS_DIFLAG_NODUMP)
+                       flags |= FS_XFLAG_NODUMP;
+               if (ip->i_diflags & XFS_DIFLAG_RTINHERIT)
+                       flags |= FS_XFLAG_RTINHERIT;
+               if (ip->i_diflags & XFS_DIFLAG_PROJINHERIT)
+                       flags |= FS_XFLAG_PROJINHERIT;
+               if (ip->i_diflags & XFS_DIFLAG_NOSYMLINKS)
+                       flags |= FS_XFLAG_NOSYMLINKS;
+               if (ip->i_diflags & XFS_DIFLAG_EXTSIZE)
+                       flags |= FS_XFLAG_EXTSIZE;
+               if (ip->i_diflags & XFS_DIFLAG_EXTSZINHERIT)
+                       flags |= FS_XFLAG_EXTSZINHERIT;
+               if (ip->i_diflags & XFS_DIFLAG_NODEFRAG)
+                       flags |= FS_XFLAG_NODEFRAG;
+               if (ip->i_diflags & XFS_DIFLAG_FILESTREAM)
+                       flags |= FS_XFLAG_FILESTREAM;
+       }
+
+       if (ip->i_diflags2 & XFS_DIFLAG2_ANY) {
+               if (ip->i_diflags2 & XFS_DIFLAG2_DAX)
+                       flags |= FS_XFLAG_DAX;
+               if (ip->i_diflags2 & XFS_DIFLAG2_COWEXTSIZE)
+                       flags |= FS_XFLAG_COWEXTSIZE;
+       }
+
+       if (xfs_inode_has_attr_fork(ip))
+               flags |= FS_XFLAG_HASATTR;
+       return flags;
+}
diff --git a/fs/xfs/libxfs/xfs_inode_util.h b/fs/xfs/libxfs/xfs_inode_util.h
new file mode 100644 (file)
index 0000000..6ad1898
--- /dev/null
@@ -0,0 +1,14 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright (c) 2000-2003,2005 Silicon Graphics, Inc.
+ * All Rights Reserved.
+ */
+#ifndef        __XFS_INODE_UTIL_H__
+#define        __XFS_INODE_UTIL_H__
+
+uint16_t       xfs_flags2diflags(struct xfs_inode *ip, unsigned int xflags);
+uint64_t       xfs_flags2diflags2(struct xfs_inode *ip, unsigned int xflags);
+uint32_t       xfs_dic2xflags(struct xfs_inode *ip);
+uint32_t       xfs_ip2xflags(struct xfs_inode *ip);
+
+#endif /* __XFS_INODE_UTIL_H__ */
index d16e727aa62a93e1569e4fd27efbad79518fe055..afc798ffa164efd37a029cc0a1b63f9f8063f559 100644 (file)
@@ -523,55 +523,6 @@ xfs_lock_two_inodes(
        }
 }
 
-uint
-xfs_ip2xflags(
-       struct xfs_inode        *ip)
-{
-       uint                    flags = 0;
-
-       if (ip->i_diflags & XFS_DIFLAG_ANY) {
-               if (ip->i_diflags & XFS_DIFLAG_REALTIME)
-                       flags |= FS_XFLAG_REALTIME;
-               if (ip->i_diflags & XFS_DIFLAG_PREALLOC)
-                       flags |= FS_XFLAG_PREALLOC;
-               if (ip->i_diflags & XFS_DIFLAG_IMMUTABLE)
-                       flags |= FS_XFLAG_IMMUTABLE;
-               if (ip->i_diflags & XFS_DIFLAG_APPEND)
-                       flags |= FS_XFLAG_APPEND;
-               if (ip->i_diflags & XFS_DIFLAG_SYNC)
-                       flags |= FS_XFLAG_SYNC;
-               if (ip->i_diflags & XFS_DIFLAG_NOATIME)
-                       flags |= FS_XFLAG_NOATIME;
-               if (ip->i_diflags & XFS_DIFLAG_NODUMP)
-                       flags |= FS_XFLAG_NODUMP;
-               if (ip->i_diflags & XFS_DIFLAG_RTINHERIT)
-                       flags |= FS_XFLAG_RTINHERIT;
-               if (ip->i_diflags & XFS_DIFLAG_PROJINHERIT)
-                       flags |= FS_XFLAG_PROJINHERIT;
-               if (ip->i_diflags & XFS_DIFLAG_NOSYMLINKS)
-                       flags |= FS_XFLAG_NOSYMLINKS;
-               if (ip->i_diflags & XFS_DIFLAG_EXTSIZE)
-                       flags |= FS_XFLAG_EXTSIZE;
-               if (ip->i_diflags & XFS_DIFLAG_EXTSZINHERIT)
-                       flags |= FS_XFLAG_EXTSZINHERIT;
-               if (ip->i_diflags & XFS_DIFLAG_NODEFRAG)
-                       flags |= FS_XFLAG_NODEFRAG;
-               if (ip->i_diflags & XFS_DIFLAG_FILESTREAM)
-                       flags |= FS_XFLAG_FILESTREAM;
-       }
-
-       if (ip->i_diflags2 & XFS_DIFLAG2_ANY) {
-               if (ip->i_diflags2 & XFS_DIFLAG2_DAX)
-                       flags |= FS_XFLAG_DAX;
-               if (ip->i_diflags2 & XFS_DIFLAG2_COWEXTSIZE)
-                       flags |= FS_XFLAG_COWEXTSIZE;
-       }
-
-       if (xfs_inode_has_attr_fork(ip))
-               flags |= FS_XFLAG_HASATTR;
-       return flags;
-}
-
 /*
  * Lookups up an inode from "name". If ci_name is not NULL, then a CI match
  * is allowed, otherwise it has to be an exact match. If a CI match is found,
index 0e642afa77a7ccd33038d841ae7eb4fc55ab71a7..b20768962e8d6e6ba352d5267949d7097ef81c2a 100644 (file)
@@ -8,6 +8,7 @@
 
 #include "xfs_inode_buf.h"
 #include "xfs_inode_fork.h"
+#include "xfs_inode_util.h"
 
 /*
  * Kernel only inode definitions
@@ -549,7 +550,6 @@ void                xfs_assert_ilocked(struct xfs_inode *, uint);
 uint           xfs_ilock_data_map_shared(struct xfs_inode *);
 uint           xfs_ilock_attr_map_shared(struct xfs_inode *);
 
-uint           xfs_ip2xflags(struct xfs_inode *);
 int            xfs_ifree(struct xfs_trans *, struct xfs_inode *);
 int            xfs_itruncate_extents_flags(struct xfs_trans **,
                                struct xfs_inode *, int, xfs_fsize_t, int);
index f0117188f3021a52d9641ac8511d28f209c7a946..4e933db75b12b94ad4b76113ec226fefbe819f1c 100644 (file)
@@ -469,66 +469,6 @@ xfs_fileattr_get(
        return 0;
 }
 
-STATIC uint16_t
-xfs_flags2diflags(
-       struct xfs_inode        *ip,
-       unsigned int            xflags)
-{
-       /* can't set PREALLOC this way, just preserve it */
-       uint16_t                di_flags =
-               (ip->i_diflags & XFS_DIFLAG_PREALLOC);
-
-       if (xflags & FS_XFLAG_IMMUTABLE)
-               di_flags |= XFS_DIFLAG_IMMUTABLE;
-       if (xflags & FS_XFLAG_APPEND)
-               di_flags |= XFS_DIFLAG_APPEND;
-       if (xflags & FS_XFLAG_SYNC)
-               di_flags |= XFS_DIFLAG_SYNC;
-       if (xflags & FS_XFLAG_NOATIME)
-               di_flags |= XFS_DIFLAG_NOATIME;
-       if (xflags & FS_XFLAG_NODUMP)
-               di_flags |= XFS_DIFLAG_NODUMP;
-       if (xflags & FS_XFLAG_NODEFRAG)
-               di_flags |= XFS_DIFLAG_NODEFRAG;
-       if (xflags & FS_XFLAG_FILESTREAM)
-               di_flags |= XFS_DIFLAG_FILESTREAM;
-       if (S_ISDIR(VFS_I(ip)->i_mode)) {
-               if (xflags & FS_XFLAG_RTINHERIT)
-                       di_flags |= XFS_DIFLAG_RTINHERIT;
-               if (xflags & FS_XFLAG_NOSYMLINKS)
-                       di_flags |= XFS_DIFLAG_NOSYMLINKS;
-               if (xflags & FS_XFLAG_EXTSZINHERIT)
-                       di_flags |= XFS_DIFLAG_EXTSZINHERIT;
-               if (xflags & FS_XFLAG_PROJINHERIT)
-                       di_flags |= XFS_DIFLAG_PROJINHERIT;
-       } else if (S_ISREG(VFS_I(ip)->i_mode)) {
-               if (xflags & FS_XFLAG_REALTIME)
-                       di_flags |= XFS_DIFLAG_REALTIME;
-               if (xflags & FS_XFLAG_EXTSIZE)
-                       di_flags |= XFS_DIFLAG_EXTSIZE;
-       }
-
-       return di_flags;
-}
-
-STATIC uint64_t
-xfs_flags2diflags2(
-       struct xfs_inode        *ip,
-       unsigned int            xflags)
-{
-       uint64_t                di_flags2 =
-               (ip->i_diflags2 & (XFS_DIFLAG2_REFLINK |
-                                  XFS_DIFLAG2_BIGTIME |
-                                  XFS_DIFLAG2_NREXT64));
-
-       if (xflags & FS_XFLAG_DAX)
-               di_flags2 |= XFS_DIFLAG2_DAX;
-       if (xflags & FS_XFLAG_COWEXTSIZE)
-               di_flags2 |= XFS_DIFLAG2_COWEXTSIZE;
-
-       return di_flags2;
-}
-
 static int
 xfs_ioctl_setattr_xflags(
        struct xfs_trans        *tp,