Jelajahi Sumber

xfs: recognize the reflink feature bit

Add the reflink feature flag to the set of recognized feature flags.
This enables users to write to reflink filesystems.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Darrick J. Wong 8 tahun lalu
induk
melakukan
e54b5bf9d7
2 mengubah file dengan 9 tambahan dan 1 penghapusan
  1. 2 1
      fs/xfs/libxfs/xfs_format.h
  2. 7 0
      fs/xfs/xfs_super.c

+ 2 - 1
fs/xfs/libxfs/xfs_format.h

@@ -459,7 +459,8 @@ xfs_sb_has_compat_feature(
 #define XFS_SB_FEAT_RO_COMPAT_REFLINK  (1 << 2)		/* reflinked files */
 #define XFS_SB_FEAT_RO_COMPAT_REFLINK  (1 << 2)		/* reflinked files */
 #define XFS_SB_FEAT_RO_COMPAT_ALL \
 #define XFS_SB_FEAT_RO_COMPAT_ALL \
 		(XFS_SB_FEAT_RO_COMPAT_FINOBT | \
 		(XFS_SB_FEAT_RO_COMPAT_FINOBT | \
-		 XFS_SB_FEAT_RO_COMPAT_RMAPBT)
+		 XFS_SB_FEAT_RO_COMPAT_RMAPBT | \
+		 XFS_SB_FEAT_RO_COMPAT_REFLINK)
 #define XFS_SB_FEAT_RO_COMPAT_UNKNOWN	~XFS_SB_FEAT_RO_COMPAT_ALL
 #define XFS_SB_FEAT_RO_COMPAT_UNKNOWN	~XFS_SB_FEAT_RO_COMPAT_ALL
 static inline bool
 static inline bool
 xfs_sb_has_ro_compat_feature(
 xfs_sb_has_ro_compat_feature(

+ 7 - 0
fs/xfs/xfs_super.c

@@ -1614,6 +1614,9 @@ xfs_fs_fill_super(
 			"DAX unsupported by block device. Turning off DAX.");
 			"DAX unsupported by block device. Turning off DAX.");
 			mp->m_flags &= ~XFS_MOUNT_DAX;
 			mp->m_flags &= ~XFS_MOUNT_DAX;
 		}
 		}
+		if (xfs_sb_version_hasreflink(&mp->m_sb))
+			xfs_alert(mp,
+		"DAX and reflink have not been tested together!");
 	}
 	}
 
 
 	if (xfs_sb_version_hasrmapbt(&mp->m_sb)) {
 	if (xfs_sb_version_hasrmapbt(&mp->m_sb)) {
@@ -1627,6 +1630,10 @@ xfs_fs_fill_super(
 	"EXPERIMENTAL reverse mapping btree feature enabled. Use at your own risk!");
 	"EXPERIMENTAL reverse mapping btree feature enabled. Use at your own risk!");
 	}
 	}
 
 
+	if (xfs_sb_version_hasreflink(&mp->m_sb))
+		xfs_alert(mp,
+	"EXPERIMENTAL reflink feature enabled. Use at your own risk!");
+
 	error = xfs_mountfs(mp);
 	error = xfs_mountfs(mp);
 	if (error)
 	if (error)
 		goto out_filestream_unmount;
 		goto out_filestream_unmount;