@@ -31,7 +31,7 @@ static int z_erofs_load_full_lcluster(struct z_erofs_maprecorder *m,
31
31
vi -> inode_isize + vi -> xattr_isize ) +
32
32
lcn * sizeof (struct z_erofs_lcluster_index );
33
33
struct z_erofs_lcluster_index * di ;
34
- unsigned int advise , type ;
34
+ unsigned int advise ;
35
35
36
36
m -> kaddr = erofs_read_metabuf (& m -> map -> buf , inode -> i_sb ,
37
37
erofs_blknr (inode -> i_sb , pos ), EROFS_KMAP );
@@ -43,10 +43,8 @@ static int z_erofs_load_full_lcluster(struct z_erofs_maprecorder *m,
43
43
di = m -> kaddr + erofs_blkoff (inode -> i_sb , pos );
44
44
45
45
advise = le16_to_cpu (di -> di_advise );
46
- type = (advise >> Z_EROFS_LI_LCLUSTER_TYPE_BIT ) &
47
- ((1 << Z_EROFS_LI_LCLUSTER_TYPE_BITS ) - 1 );
48
- switch (type ) {
49
- case Z_EROFS_LCLUSTER_TYPE_NONHEAD :
46
+ m -> type = advise & Z_EROFS_LI_LCLUSTER_TYPE_MASK ;
47
+ if (m -> type == Z_EROFS_LCLUSTER_TYPE_NONHEAD ) {
50
48
m -> clusterofs = 1 << vi -> z_logical_clusterbits ;
51
49
m -> delta [0 ] = le16_to_cpu (di -> di_u .delta [0 ]);
52
50
if (m -> delta [0 ] & Z_EROFS_LI_D0_CBLKCNT ) {
@@ -60,24 +58,15 @@ static int z_erofs_load_full_lcluster(struct z_erofs_maprecorder *m,
60
58
m -> delta [0 ] = 1 ;
61
59
}
62
60
m -> delta [1 ] = le16_to_cpu (di -> di_u .delta [1 ]);
63
- break ;
64
- case Z_EROFS_LCLUSTER_TYPE_PLAIN :
65
- case Z_EROFS_LCLUSTER_TYPE_HEAD1 :
66
- case Z_EROFS_LCLUSTER_TYPE_HEAD2 :
67
- if (advise & Z_EROFS_LI_PARTIAL_REF )
68
- m -> partialref = true;
61
+ } else {
62
+ m -> partialref = !!(advise & Z_EROFS_LI_PARTIAL_REF );
69
63
m -> clusterofs = le16_to_cpu (di -> di_clusterofs );
70
64
if (m -> clusterofs >= 1 << vi -> z_logical_clusterbits ) {
71
65
DBG_BUGON (1 );
72
66
return - EFSCORRUPTED ;
73
67
}
74
68
m -> pblk = le32_to_cpu (di -> di_u .blkaddr );
75
- break ;
76
- default :
77
- DBG_BUGON (1 );
78
- return - EOPNOTSUPP ;
79
69
}
80
- m -> type = type ;
81
70
return 0 ;
82
71
}
83
72
0 commit comments