mirror of https://github.com/torvalds/linux.git
erofs: use Z_EROFS_LCLUSTER_TYPE_MAX to simplify switches
There's no need to enumerate each type. No logic changes. Signed-off-by: Hongzhen Luo <hongzhen@linux.alibaba.com> Reviewed-by: Gao Xiang <hsiangkao@linux.alibaba.com> Reviewed-by: Chao Yu <chao@kernel.org> Link: https://lore.kernel.org/r/20250210032923.3382136-1-hongzhen@linux.alibaba.com Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
This commit is contained in:
parent
80e54e8491
commit
3b7781aeae
|
|
@ -265,26 +265,22 @@ static int z_erofs_extent_lookback(struct z_erofs_maprecorder *m,
|
|||
if (err)
|
||||
return err;
|
||||
|
||||
switch (m->type) {
|
||||
case Z_EROFS_LCLUSTER_TYPE_NONHEAD:
|
||||
lookback_distance = m->delta[0];
|
||||
if (!lookback_distance)
|
||||
goto err_bogus;
|
||||
continue;
|
||||
case Z_EROFS_LCLUSTER_TYPE_PLAIN:
|
||||
case Z_EROFS_LCLUSTER_TYPE_HEAD1:
|
||||
case Z_EROFS_LCLUSTER_TYPE_HEAD2:
|
||||
m->headtype = m->type;
|
||||
m->map->m_la = (lcn << lclusterbits) | m->clusterofs;
|
||||
return 0;
|
||||
default:
|
||||
if (m->type >= Z_EROFS_LCLUSTER_TYPE_MAX) {
|
||||
erofs_err(sb, "unknown type %u @ lcn %lu of nid %llu",
|
||||
m->type, lcn, vi->nid);
|
||||
DBG_BUGON(1);
|
||||
return -EOPNOTSUPP;
|
||||
} else if (m->type == Z_EROFS_LCLUSTER_TYPE_NONHEAD) {
|
||||
lookback_distance = m->delta[0];
|
||||
if (!lookback_distance)
|
||||
break;
|
||||
continue;
|
||||
} else {
|
||||
m->headtype = m->type;
|
||||
m->map->m_la = (lcn << lclusterbits) | m->clusterofs;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
err_bogus:
|
||||
erofs_err(sb, "bogus lookback distance %u @ lcn %lu of nid %llu",
|
||||
lookback_distance, m->lcn, vi->nid);
|
||||
DBG_BUGON(1);
|
||||
|
|
@ -329,35 +325,28 @@ static int z_erofs_get_extent_compressedlen(struct z_erofs_maprecorder *m,
|
|||
DBG_BUGON(lcn == initial_lcn &&
|
||||
m->type == Z_EROFS_LCLUSTER_TYPE_NONHEAD);
|
||||
|
||||
switch (m->type) {
|
||||
case Z_EROFS_LCLUSTER_TYPE_PLAIN:
|
||||
case Z_EROFS_LCLUSTER_TYPE_HEAD1:
|
||||
case Z_EROFS_LCLUSTER_TYPE_HEAD2:
|
||||
if (m->type == Z_EROFS_LCLUSTER_TYPE_NONHEAD) {
|
||||
if (m->delta[0] != 1) {
|
||||
erofs_err(sb, "bogus CBLKCNT @ lcn %lu of nid %llu", lcn, vi->nid);
|
||||
DBG_BUGON(1);
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
if (m->compressedblks)
|
||||
goto out;
|
||||
} else if (m->type < Z_EROFS_LCLUSTER_TYPE_MAX) {
|
||||
/*
|
||||
* if the 1st NONHEAD lcluster is actually PLAIN or HEAD type
|
||||
* rather than CBLKCNT, it's a 1 block-sized pcluster.
|
||||
*/
|
||||
m->compressedblks = 1;
|
||||
break;
|
||||
case Z_EROFS_LCLUSTER_TYPE_NONHEAD:
|
||||
if (m->delta[0] != 1)
|
||||
goto err_bonus_cblkcnt;
|
||||
if (m->compressedblks)
|
||||
break;
|
||||
fallthrough;
|
||||
default:
|
||||
erofs_err(sb, "cannot found CBLKCNT @ lcn %lu of nid %llu", lcn,
|
||||
vi->nid);
|
||||
goto out;
|
||||
}
|
||||
erofs_err(sb, "cannot found CBLKCNT @ lcn %lu of nid %llu", lcn, vi->nid);
|
||||
DBG_BUGON(1);
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
out:
|
||||
m->map->m_plen = erofs_pos(sb, m->compressedblks);
|
||||
return 0;
|
||||
err_bonus_cblkcnt:
|
||||
erofs_err(sb, "bogus CBLKCNT @ lcn %lu of nid %llu", lcn, vi->nid);
|
||||
DBG_BUGON(1);
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
|
||||
static int z_erofs_get_extent_decompressedlen(struct z_erofs_maprecorder *m)
|
||||
|
|
@ -386,9 +375,7 @@ static int z_erofs_get_extent_decompressedlen(struct z_erofs_maprecorder *m)
|
|||
m->delta[1] = 1;
|
||||
DBG_BUGON(1);
|
||||
}
|
||||
} else if (m->type == Z_EROFS_LCLUSTER_TYPE_PLAIN ||
|
||||
m->type == Z_EROFS_LCLUSTER_TYPE_HEAD1 ||
|
||||
m->type == Z_EROFS_LCLUSTER_TYPE_HEAD2) {
|
||||
} else if (m->type < Z_EROFS_LCLUSTER_TYPE_MAX) {
|
||||
if (lcn != headlcn)
|
||||
break; /* ends at the next HEAD lcluster */
|
||||
m->delta[1] = 1;
|
||||
|
|
@ -452,8 +439,7 @@ static int z_erofs_do_map_blocks(struct inode *inode,
|
|||
}
|
||||
/* m.lcn should be >= 1 if endoff < m.clusterofs */
|
||||
if (!m.lcn) {
|
||||
erofs_err(inode->i_sb,
|
||||
"invalid logical cluster 0 at nid %llu",
|
||||
erofs_err(inode->i_sb, "invalid logical cluster 0 at nid %llu",
|
||||
vi->nid);
|
||||
err = -EFSCORRUPTED;
|
||||
goto unmap_out;
|
||||
|
|
@ -469,8 +455,7 @@ static int z_erofs_do_map_blocks(struct inode *inode,
|
|||
goto unmap_out;
|
||||
break;
|
||||
default:
|
||||
erofs_err(inode->i_sb,
|
||||
"unknown type %u @ offset %llu of nid %llu",
|
||||
erofs_err(inode->i_sb, "unknown type %u @ offset %llu of nid %llu",
|
||||
m.type, ofs, vi->nid);
|
||||
err = -EOPNOTSUPP;
|
||||
goto unmap_out;
|
||||
|
|
|
|||
Loading…
Reference in New Issue