Lines Matching +full:multi +full:- +full:cluster
1 /* SPDX-License-Identifier: GPL-2.0-only OR Apache-2.0 */
3 * EROFS (Enhanced ROM File System) on-disk format definition
5 * Copyright (C) 2017-2018 HUAWEI, Inc.
35 ((EROFS_FEATURE_INCOMPAT_48BIT << 1) - 1)
49 /* erofs on-disk super block (currently 128 bytes) */
52 __le32 checksum; /* crc32c to avoid unexpected on-disk overlap */
60 __le64 inos; /* total valid ino # (== f_files - f_favail) */
66 __u8 uuid[16]; /* 128-bit uuid for volume */
89 * EROFS inode datalayout (i_format in on-disk inode):
90 * 0 - uncompressed flat inode without tail-packing inline data:
91 * 1 - compressed inode with non-compact indexes:
92 * 2 - uncompressed flat inode with tail-packing inline data:
93 * 3 - compressed inode with compact indexes:
94 * 4 - chunk-based inode with (optional) multi-device support:
95 * 5~7 - reserved
118 #define EROFS_I_NLINK_1_BIT 4 /* non-directory compact inodes only */
120 #define EROFS_I_ALL ((1 << (EROFS_I_NLINK_1_BIT + 1)) - 1)
124 /* with chunk indexes or just a 4-byte block array */
128 #define EROFS_CHUNK_FORMAT_ALL ((EROFS_CHUNK_FORMAT_48BIT << 1) - 1)
130 /* 32-byte on-disk inode */
132 /* 64-byte on-disk inode */
153 /* 32-byte reduced form of an ondisk inode */
163 __le32 i_ino; /* only used for 32-bit stat compatibility */
169 /* 64-byte complete form of an ondisk inode */
178 __le32 i_ino; /* only used for 32-bit stat compatibility */
189 * erofs_xattr_ibody_header(1) + (n - 1) * 4 bytes
192 * /-----------------------\
194 * +-----------------------+
196 * for read-only fs, no need to introduce h_refcount
199 __le32 h_name_filter; /* bit value 1 indicates not-present */
244 /* 1 header + n-1 * 4 bytes inline xattr to keep continuity */ in erofs_xattr_ibody_size()
246 sizeof(__u32) * (le16_to_cpu(i_xattr_icount) - 1); in erofs_xattr_ibody_size()
254 e->e_name_len + le16_to_cpu(e->e_value_size)); in erofs_xattr_entry_size()
258 #define EROFS_NULL_ADDR -1
260 /* 4-byte block address array */
263 /* 8-byte inode chunk index */
266 __le16 device_id; /* back-end storage id (with bits masked) */
286 /* maximum supported encoded size of a physical compressed cluster */
289 /* maximum supported decoded size of a physical compressed cluster */
300 #define Z_EROFS_ALL_COMPR_ALGS ((1 << Z_EROFS_COMPRESSION_MAX) - 1)
327 u8 windowlog; /* windowLog - ZSTD_WINDOWLOG_ABSOLUTEMIN(10) */
364 /* algorithm type (bit 0-3: HEAD1; bit 4-7: HEAD2) */
367 * bit 0-3 : logical cluster bits - blkszbits
368 * bit 4-6 : reserved
385 #define Z_EROFS_LI_LCLUSTER_TYPE_MASK (Z_EROFS_LCLUSTER_TYPE_MAX - 1)
390 /* Set on 1st non-head lcluster to store compressed block counti (in blocks) */
401 * [0] - distance to its HEAD lcluster
402 * [1] - distance to the next HEAD lcluster
414 #define Z_EROFS_EXTENT_PLEN_MASK ((Z_EROFS_PCLUSTER_MAX_SIZE << 1) - 1)
430 /* check the EROFS on-disk layout strictly at compile time */