Merge tag 'xfs-4.16-merge-5' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 5 Feb 2018 21:35:56 +0000 (13:35 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 5 Feb 2018 21:35:56 +0000 (13:35 -0800)
Pull more xfs updates from Darrick Wong:
 "As promised, here's a (much smaller) second pull request for the
  second week of the merge cycle. This time around we have a couple
  patches shutting off unsupported fs configurations, and a couple of
  cleanups.

  Last, we turn off EXPERIMENTAL for the reverse mapping btree, since
  the primary downstream user of that information (online fsck) is now
  upstream and I haven't seen any major failures in a few kernel
  releases.

  Summary:

   - Print scrub build status in the xfs build info.

   - Explicitly call out the remaining two scenarios where we don't
     support reflink and never have.

   - Remove EXPERIMENTAL tag from reverse mapping btree!"

* tag 'xfs-4.16-merge-5' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux:
  xfs: remove experimental tag for reverse mapping
  xfs: don't allow reflink + realtime filesystems
  xfs: don't allow DAX on reflink filesystems
  xfs: add scrub to XFS_BUILD_OPTIONS
  xfs: fix u32 type usage in sb validation function

fs/xfs/libxfs/xfs_sb.c
fs/xfs/xfs_super.c
fs/xfs/xfs_super.h

index 46af6aa60a8edac7179cc07a2ea07537d9ae05e8..a55f7a45fa786d7c5b1b50591a90fe92926431e8 100644 (file)
@@ -118,8 +118,8 @@ xfs_mount_validate_sb(
        bool            check_inprogress,
        bool            check_version)
 {
-       u32             agcount = 0;
-       u32             rem;
+       uint32_t        agcount = 0;
+       uint32_t        rem;
 
        if (sbp->sb_magicnum != XFS_SB_MAGIC) {
                xfs_warn(mp, "bad magic number");
index f3e0001f999234bad791cd80b36e3f68e41281a2..7aba628dc5279858a7608a78839b0e32753bbee6 100644 (file)
@@ -1666,9 +1666,12 @@ xfs_fs_fill_super(
                        "DAX unsupported by block device. Turning off DAX.");
                        mp->m_flags &= ~XFS_MOUNT_DAX;
                }
-               if (xfs_sb_version_hasreflink(&mp->m_sb))
+               if (xfs_sb_version_hasreflink(&mp->m_sb)) {
                        xfs_alert(mp,
                "DAX and reflink cannot be used together!");
+                       error = -EINVAL;
+                       goto out_filestream_unmount;
+               }
        }
 
        if (mp->m_flags & XFS_MOUNT_DISCARD) {
@@ -1681,15 +1684,18 @@ xfs_fs_fill_super(
                }
        }
 
-       if (xfs_sb_version_hasrmapbt(&mp->m_sb)) {
-               if (mp->m_sb.sb_rblocks) {
-                       xfs_alert(mp,
-       "EXPERIMENTAL reverse mapping btree not compatible with realtime device!");
-                       error = -EINVAL;
-                       goto out_filestream_unmount;
-               }
+       if (xfs_sb_version_hasreflink(&mp->m_sb) && mp->m_sb.sb_rblocks) {
+               xfs_alert(mp,
+       "reflink not compatible with realtime device!");
+               error = -EINVAL;
+               goto out_filestream_unmount;
+       }
+
+       if (xfs_sb_version_hasrmapbt(&mp->m_sb) && mp->m_sb.sb_rblocks) {
                xfs_alert(mp,
-       "EXPERIMENTAL reverse mapping btree feature enabled. Use at your own risk!");
+       "reverse mapping btree not compatible with realtime device!");
+               error = -EINVAL;
+               goto out_filestream_unmount;
        }
 
        error = xfs_mountfs(mp);
index fcc5dfc70aa0c93a635514cb7acececb9e05e2e6..8cee8e8050e3e9fa5ebba5f4009e064c27dc7688 100644 (file)
@@ -44,6 +44,12 @@ extern void xfs_qm_exit(void);
 # define XFS_REALTIME_STRING
 #endif
 
+#ifdef CONFIG_XFS_ONLINE_SCRUB
+# define XFS_SCRUB_STRING      "scrub, "
+#else
+# define XFS_SCRUB_STRING
+#endif
+
 #ifdef DEBUG
 # define XFS_DBG_STRING                "debug"
 #else
@@ -54,6 +60,7 @@ extern void xfs_qm_exit(void);
 #define XFS_BUILD_OPTIONS      XFS_ACL_STRING \
                                XFS_SECURITY_STRING \
                                XFS_REALTIME_STRING \
+                               XFS_SCRUB_STRING \
                                XFS_DBG_STRING /* DBG must be last */
 
 struct xfs_inode;