Filipe Manana f5cf2d
From: Chung-Chiang Cheng <cccheng@synology.com>
Filipe Manana f5cf2d
Date: Fri, 15 Apr 2022 16:04:05 +0800
Filipe Manana f5cf2d
Git-commit: e6f9d69648029e48b8f97db09368d419b5e2614a
Filipe Manana f5cf2d
Patch-mainline: v5.18-rc6
Filipe Manana f5cf2d
References: bsc#1206149
Filipe Manana f5cf2d
Subject: [PATCH] btrfs: export a helper for compression hard check
Filipe Manana f5cf2d
Filipe Manana f5cf2d
inode_can_compress will be used outside of inode.c to check the
Filipe Manana f5cf2d
availability of setting compression flag by xattr. This patch moves
Filipe Manana f5cf2d
this function as an internal helper and renames it to
Filipe Manana f5cf2d
btrfs_inode_can_compress.
Filipe Manana f5cf2d
Filipe Manana f5cf2d
Reviewed-by: Nikolay Borisov <nborisov@suse.com>
Filipe Manana f5cf2d
Signed-off-by: Chung-Chiang Cheng <cccheng@synology.com>
Filipe Manana f5cf2d
Reviewed-by: David Sterba <dsterba@suse.com>
Filipe Manana f5cf2d
Signed-off-by: David Sterba <dsterba@suse.com>
Filipe Manana f5cf2d
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Filipe Manana f5cf2d
---
Filipe Manana f5cf2d
 fs/btrfs/btrfs_inode.h | 14 ++++++++++++++
Filipe Manana f5cf2d
 fs/btrfs/inode.c       | 18 ++----------------
Filipe Manana f5cf2d
 2 files changed, 16 insertions(+), 16 deletions(-)
Filipe Manana f5cf2d
Filipe Manana f5cf2d
diff --git a/fs/btrfs/btrfs_inode.h b/fs/btrfs/btrfs_inode.h
Filipe Manana f5cf2d
index 2172b37c8..476a25661 100644
Filipe Manana f5cf2d
--- a/fs/btrfs/btrfs_inode.h
Filipe Manana f5cf2d
+++ b/fs/btrfs/btrfs_inode.h
Filipe Manana f5cf2d
@@ -339,6 +339,20 @@ static inline bool btrfs_inode_in_log(struct btrfs_inode *inode, u64 generation)
Filipe Manana f5cf2d
 	return ret;
Filipe Manana f5cf2d
 }
Filipe Manana f5cf2d
 
Filipe Manana f5cf2d
+/*
Filipe Manana f5cf2d
+ * Check if the inode has flags compatible with compression
Filipe Manana f5cf2d
+ */
Filipe Manana f5cf2d
+static inline bool btrfs_inode_can_compress(const struct btrfs_inode *inode)
Filipe Manana f5cf2d
+{
Filipe Manana f5cf2d
+	/* Subpage doesn't support compression yet */
Filipe Manana f5cf2d
+	if (inode->root->fs_info->sectorsize < PAGE_SIZE)
Filipe Manana f5cf2d
+		return false;
Filipe Manana f5cf2d
+	if (inode->flags & BTRFS_INODE_NODATACOW ||
Filipe Manana f5cf2d
+	    inode->flags & BTRFS_INODE_NODATASUM)
Filipe Manana f5cf2d
+		return false;
Filipe Manana f5cf2d
+	return true;
Filipe Manana f5cf2d
+}
Filipe Manana f5cf2d
+
Filipe Manana f5cf2d
 struct btrfs_dio_private {
Filipe Manana f5cf2d
 	struct inode *inode;
Filipe Manana f5cf2d
 	u64 logical_offset;
Filipe Manana f5cf2d
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
Filipe Manana f5cf2d
index c9c7d97eb..45e6827aa 100644
Filipe Manana f5cf2d
--- a/fs/btrfs/inode.c
Filipe Manana f5cf2d
+++ b/fs/btrfs/inode.c
Filipe Manana f5cf2d
@@ -485,20 +485,6 @@ static noinline int add_async_extent(struct async_chunk *cow,
Filipe Manana f5cf2d
 	return 0;
Filipe Manana f5cf2d
 }
Filipe Manana f5cf2d
 
Filipe Manana f5cf2d
-/*
Filipe Manana f5cf2d
- * Check if the inode has flags compatible with compression
Filipe Manana f5cf2d
- */
Filipe Manana f5cf2d
-static inline bool inode_can_compress(struct btrfs_inode *inode)
Filipe Manana f5cf2d
-{
Filipe Manana f5cf2d
-	/* Subpage doesn't support compression yet */
Filipe Manana f5cf2d
-	if (inode->root->fs_info->sectorsize < PAGE_SIZE)
Filipe Manana f5cf2d
-		return false;
Filipe Manana f5cf2d
-	if (inode->flags & BTRFS_INODE_NODATACOW ||
Filipe Manana f5cf2d
-	    inode->flags & BTRFS_INODE_NODATASUM)
Filipe Manana f5cf2d
-		return false;
Filipe Manana f5cf2d
-	return true;
Filipe Manana f5cf2d
-}
Filipe Manana f5cf2d
-
Filipe Manana f5cf2d
 /*
Filipe Manana f5cf2d
  * Check if the inode needs to be submitted to compression, based on mount
Filipe Manana f5cf2d
  * options, defragmentation, properties or heuristics.
Filipe Manana f5cf2d
@@ -508,7 +494,7 @@ static inline int inode_need_compress(struct btrfs_inode *inode, u64 start,
Filipe Manana f5cf2d
 {
Filipe Manana f5cf2d
 	struct btrfs_fs_info *fs_info = inode->root->fs_info;
Filipe Manana f5cf2d
 
Filipe Manana f5cf2d
-	if (!inode_can_compress(inode)) {
Filipe Manana f5cf2d
+	if (!btrfs_inode_can_compress(inode)) {
Filipe Manana f5cf2d
 		WARN(IS_ENABLED(CONFIG_BTRFS_DEBUG),
Filipe Manana f5cf2d
 			KERN_ERR "BTRFS: unexpected compression for ino %llu\n",
Filipe Manana f5cf2d
 			btrfs_ino(inode));
Filipe Manana f5cf2d
@@ -1950,7 +1936,7 @@ int btrfs_run_delalloc_range(struct btrfs_inode *inode, struct page *locked_page
Filipe Manana f5cf2d
 		ASSERT(!zoned);
Filipe Manana f5cf2d
 		ret = run_delalloc_nocow(inode, locked_page, start, end,
Filipe Manana f5cf2d
 					 page_started, nr_written);
Filipe Manana f5cf2d
-	} else if (!inode_can_compress(inode) ||
Filipe Manana f5cf2d
+	} else if (!btrfs_inode_can_compress(inode) ||
Filipe Manana f5cf2d
 		   !inode_need_compress(inode, start, end)) {
Filipe Manana f5cf2d
 		if (zoned)
Filipe Manana f5cf2d
 			ret = run_delalloc_zoned(inode, locked_page, start, end,
Filipe Manana f5cf2d
-- 
Filipe Manana f5cf2d
2.26.2
Filipe Manana f5cf2d