Commit 91f0fb69 authored by Chao Yu's avatar Chao Yu Committed by Jaegeuk Kim

f2fs: compress: clean up parameter of __f2fs_cluster_blocks()

Previously, in order to reuse __f2fs_cluster_blocks(),
f2fs_is_compressed_cluster() assigned a compress_ctx type variable,
which is used to pass few parameters (cc.inode, cc.cluster_size,
cc.cluster_idx), it's wasteful to allocate such large space in stack.

Let's clean up parameters of __f2fs_cluster_blocks() to avoid that.
Signed-off-by: default avatarChao Yu <yuchao0@huawei.com>
Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
parent fbec3b96
...@@ -892,14 +892,17 @@ static bool cluster_has_invalid_data(struct compress_ctx *cc) ...@@ -892,14 +892,17 @@ static bool cluster_has_invalid_data(struct compress_ctx *cc)
return false; return false;
} }
static int __f2fs_cluster_blocks(struct compress_ctx *cc, bool compr) static int __f2fs_cluster_blocks(struct inode *inode,
unsigned int cluster_idx, bool compr)
{ {
struct dnode_of_data dn; struct dnode_of_data dn;
unsigned int cluster_size = F2FS_I(inode)->i_cluster_size;
unsigned int start_idx = cluster_idx <<
F2FS_I(inode)->i_log_cluster_size;
int ret; int ret;
set_new_dnode(&dn, cc->inode, NULL, NULL, 0); set_new_dnode(&dn, inode, NULL, NULL, 0);
ret = f2fs_get_dnode_of_data(&dn, start_idx_of_cluster(cc), ret = f2fs_get_dnode_of_data(&dn, start_idx, LOOKUP_NODE);
LOOKUP_NODE);
if (ret) { if (ret) {
if (ret == -ENOENT) if (ret == -ENOENT)
ret = 0; ret = 0;
...@@ -910,7 +913,7 @@ static int __f2fs_cluster_blocks(struct compress_ctx *cc, bool compr) ...@@ -910,7 +913,7 @@ static int __f2fs_cluster_blocks(struct compress_ctx *cc, bool compr)
int i; int i;
ret = 1; ret = 1;
for (i = 1; i < cc->cluster_size; i++) { for (i = 1; i < cluster_size; i++) {
block_t blkaddr; block_t blkaddr;
blkaddr = data_blkaddr(dn.inode, blkaddr = data_blkaddr(dn.inode,
...@@ -932,25 +935,15 @@ static int __f2fs_cluster_blocks(struct compress_ctx *cc, bool compr) ...@@ -932,25 +935,15 @@ static int __f2fs_cluster_blocks(struct compress_ctx *cc, bool compr)
/* return # of compressed blocks in compressed cluster */ /* return # of compressed blocks in compressed cluster */
static int f2fs_compressed_blocks(struct compress_ctx *cc) static int f2fs_compressed_blocks(struct compress_ctx *cc)
{ {
return __f2fs_cluster_blocks(cc, true); return __f2fs_cluster_blocks(cc->inode, cc->cluster_idx, true);
} }
/* return # of valid blocks in compressed cluster */ /* return # of valid blocks in compressed cluster */
static int f2fs_cluster_blocks(struct compress_ctx *cc)
{
return __f2fs_cluster_blocks(cc, false);
}
int f2fs_is_compressed_cluster(struct inode *inode, pgoff_t index) int f2fs_is_compressed_cluster(struct inode *inode, pgoff_t index)
{ {
struct compress_ctx cc = { return __f2fs_cluster_blocks(inode,
.inode = inode, index >> F2FS_I(inode)->i_log_cluster_size,
.log_cluster_size = F2FS_I(inode)->i_log_cluster_size, false);
.cluster_size = F2FS_I(inode)->i_cluster_size,
.cluster_idx = index >> F2FS_I(inode)->i_log_cluster_size,
};
return f2fs_cluster_blocks(&cc);
} }
static bool cluster_may_compress(struct compress_ctx *cc) static bool cluster_may_compress(struct compress_ctx *cc)
...@@ -1001,7 +994,7 @@ static int prepare_compress_overwrite(struct compress_ctx *cc, ...@@ -1001,7 +994,7 @@ static int prepare_compress_overwrite(struct compress_ctx *cc,
bool prealloc; bool prealloc;
retry: retry:
ret = f2fs_cluster_blocks(cc); ret = f2fs_is_compressed_cluster(cc->inode, start_idx);
if (ret <= 0) if (ret <= 0)
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment