Skip to content

Commit 516fabf

Browse files
Hongzhen Luogregkh
authored andcommitted
erofs: use Z_EROFS_LCLUSTER_TYPE_MAX to simplify switches
[ Upstream commit 3b7781aeaefb627d4e07c1af9be923f9e8047d8b ] There's no need to enumerate each type. No logic changes. Signed-off-by: Hongzhen Luo <[email protected]> Reviewed-by: Gao Xiang <[email protected]> Reviewed-by: Chao Yu <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Gao Xiang <[email protected]> Stable-dep-of: b44686c8391b ("erofs: fix large fragment handling") Signed-off-by: Sasha Levin <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent 9a84e21 commit 516fabf

File tree

1 file changed

+24
-39
lines changed

1 file changed

+24
-39
lines changed

fs/erofs/zmap.c

Lines changed: 24 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -265,26 +265,22 @@ static int z_erofs_extent_lookback(struct z_erofs_maprecorder *m,
265265
if (err)
266266
return err;
267267

268-
switch (m->type) {
269-
case Z_EROFS_LCLUSTER_TYPE_NONHEAD:
268+
if (m->type >= Z_EROFS_LCLUSTER_TYPE_MAX) {
269+
erofs_err(sb, "unknown type %u @ lcn %lu of nid %llu",
270+
m->type, lcn, vi->nid);
271+
DBG_BUGON(1);
272+
return -EOPNOTSUPP;
273+
} else if (m->type == Z_EROFS_LCLUSTER_TYPE_NONHEAD) {
270274
lookback_distance = m->delta[0];
271275
if (!lookback_distance)
272-
goto err_bogus;
276+
break;
273277
continue;
274-
case Z_EROFS_LCLUSTER_TYPE_PLAIN:
275-
case Z_EROFS_LCLUSTER_TYPE_HEAD1:
276-
case Z_EROFS_LCLUSTER_TYPE_HEAD2:
278+
} else {
277279
m->headtype = m->type;
278280
m->map->m_la = (lcn << lclusterbits) | m->clusterofs;
279281
return 0;
280-
default:
281-
erofs_err(sb, "unknown type %u @ lcn %lu of nid %llu",
282-
m->type, lcn, vi->nid);
283-
DBG_BUGON(1);
284-
return -EOPNOTSUPP;
285282
}
286283
}
287-
err_bogus:
288284
erofs_err(sb, "bogus lookback distance %u @ lcn %lu of nid %llu",
289285
lookback_distance, m->lcn, vi->nid);
290286
DBG_BUGON(1);
@@ -329,35 +325,28 @@ static int z_erofs_get_extent_compressedlen(struct z_erofs_maprecorder *m,
329325
DBG_BUGON(lcn == initial_lcn &&
330326
m->type == Z_EROFS_LCLUSTER_TYPE_NONHEAD);
331327

332-
switch (m->type) {
333-
case Z_EROFS_LCLUSTER_TYPE_PLAIN:
334-
case Z_EROFS_LCLUSTER_TYPE_HEAD1:
335-
case Z_EROFS_LCLUSTER_TYPE_HEAD2:
328+
if (m->type == Z_EROFS_LCLUSTER_TYPE_NONHEAD) {
329+
if (m->delta[0] != 1) {
330+
erofs_err(sb, "bogus CBLKCNT @ lcn %lu of nid %llu", lcn, vi->nid);
331+
DBG_BUGON(1);
332+
return -EFSCORRUPTED;
333+
}
334+
if (m->compressedblks)
335+
goto out;
336+
} else if (m->type < Z_EROFS_LCLUSTER_TYPE_MAX) {
336337
/*
337338
* if the 1st NONHEAD lcluster is actually PLAIN or HEAD type
338339
* rather than CBLKCNT, it's a 1 block-sized pcluster.
339340
*/
340341
m->compressedblks = 1;
341-
break;
342-
case Z_EROFS_LCLUSTER_TYPE_NONHEAD:
343-
if (m->delta[0] != 1)
344-
goto err_bonus_cblkcnt;
345-
if (m->compressedblks)
346-
break;
347-
fallthrough;
348-
default:
349-
erofs_err(sb, "cannot found CBLKCNT @ lcn %lu of nid %llu", lcn,
350-
vi->nid);
351-
DBG_BUGON(1);
352-
return -EFSCORRUPTED;
342+
goto out;
353343
}
344+
erofs_err(sb, "cannot found CBLKCNT @ lcn %lu of nid %llu", lcn, vi->nid);
345+
DBG_BUGON(1);
346+
return -EFSCORRUPTED;
354347
out:
355348
m->map->m_plen = erofs_pos(sb, m->compressedblks);
356349
return 0;
357-
err_bonus_cblkcnt:
358-
erofs_err(sb, "bogus CBLKCNT @ lcn %lu of nid %llu", lcn, vi->nid);
359-
DBG_BUGON(1);
360-
return -EFSCORRUPTED;
361350
}
362351

363352
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)
386375
m->delta[1] = 1;
387376
DBG_BUGON(1);
388377
}
389-
} else if (m->type == Z_EROFS_LCLUSTER_TYPE_PLAIN ||
390-
m->type == Z_EROFS_LCLUSTER_TYPE_HEAD1 ||
391-
m->type == Z_EROFS_LCLUSTER_TYPE_HEAD2) {
378+
} else if (m->type < Z_EROFS_LCLUSTER_TYPE_MAX) {
392379
if (lcn != headlcn)
393380
break; /* ends at the next HEAD lcluster */
394381
m->delta[1] = 1;
@@ -452,8 +439,7 @@ static int z_erofs_do_map_blocks(struct inode *inode,
452439
}
453440
/* m.lcn should be >= 1 if endoff < m.clusterofs */
454441
if (!m.lcn) {
455-
erofs_err(inode->i_sb,
456-
"invalid logical cluster 0 at nid %llu",
442+
erofs_err(inode->i_sb, "invalid logical cluster 0 at nid %llu",
457443
vi->nid);
458444
err = -EFSCORRUPTED;
459445
goto unmap_out;
@@ -469,8 +455,7 @@ static int z_erofs_do_map_blocks(struct inode *inode,
469455
goto unmap_out;
470456
break;
471457
default:
472-
erofs_err(inode->i_sb,
473-
"unknown type %u @ offset %llu of nid %llu",
458+
erofs_err(inode->i_sb, "unknown type %u @ offset %llu of nid %llu",
474459
m.type, ofs, vi->nid);
475460
err = -EOPNOTSUPP;
476461
goto unmap_out;

0 commit comments

Comments
 (0)