Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/toolkit/themes/shared/pictureinpicture/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 14 kB image not shown  

Impressum inode_format.h   Sprache: unbekannt

 
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _BCACHEFS_INODE_FORMAT_H
#define _BCACHEFS_INODE_FORMAT_H

#define BLOCKDEV_INODE_MAX 4096
#define BCACHEFS_ROOT_INO 4096

struct bch_inode {
 struct bch_val  v;

 __le64   bi_hash_seed;
 __le32   bi_flags;
 __le16   bi_mode;
 __u8   fields[];
} __packed __aligned(8);

struct bch_inode_v2 {
 struct bch_val  v;

 __le64   bi_journal_seq;
 __le64   bi_hash_seed;
 __le64   bi_flags;
 __le16   bi_mode;
 __u8   fields[];
} __packed __aligned(8);

struct bch_inode_v3 {
 struct bch_val  v;

 __le64   bi_journal_seq;
 __le64   bi_hash_seed;
 __le64   bi_flags;
 __le64   bi_sectors;
 __le64   bi_size;
 __le64   bi_version;
 __u8   fields[];
} __packed __aligned(8);

#define INODEv3_FIELDS_START_INITIAL 6
#define INODEv3_FIELDS_START_CUR (offsetof(struct bch_inode_v3, fields) / sizeof(__u64))

struct bch_inode_generation {
 struct bch_val  v;

 __le32   bi_generation;
 __le32   pad;
} __packed __aligned(8);

/*
 * bi_subvol and bi_parent_subvol are only set for subvolume roots:
 */


#define BCH_INODE_FIELDS_v2()   \
 x(bi_atime,   96) \
 x(bi_ctime,   96) \
 x(bi_mtime,   96) \
 x(bi_otime,   96) \
 x(bi_size,   64) \
 x(bi_sectors,   64) \
 x(bi_uid,   32) \
 x(bi_gid,   32) \
 x(bi_nlink,   32) \
 x(bi_generation,  32) \
 x(bi_dev,   32) \
 x(bi_data_checksum,  8) \
 x(bi_compression,  8) \
 x(bi_project,   32) \
 x(bi_background_compression, 8) \
 x(bi_data_replicas,  8) \
 x(bi_promote_target,  16) \
 x(bi_foreground_target,  16) \
 x(bi_background_target,  16) \
 x(bi_erasure_code,  16) \
 x(bi_fields_set,  16) \
 x(bi_dir,   64) \
 x(bi_dir_offset,  64) \
 x(bi_subvol,   32) \
 x(bi_parent_subvol,  32)

#define BCH_INODE_FIELDS_v3()   \
 x(bi_atime,   96) \
 x(bi_ctime,   96) \
 x(bi_mtime,   96) \
 x(bi_otime,   96) \
 x(bi_uid,   32) \
 x(bi_gid,   32) \
 x(bi_nlink,   32) \
 x(bi_generation,  32) \
 x(bi_dev,   32) \
 x(bi_data_checksum,  8) \
 x(bi_compression,  8) \
 x(bi_project,   32) \
 x(bi_background_compression, 8) \
 x(bi_data_replicas,  8) \
 x(bi_promote_target,  16) \
 x(bi_foreground_target,  16) \
 x(bi_background_target,  16) \
 x(bi_erasure_code,  16) \
 x(bi_fields_set,  16) \
 x(bi_dir,   64) \
 x(bi_dir_offset,  64) \
 x(bi_subvol,   32) \
 x(bi_parent_subvol,  32) \
 x(bi_nocow,   8) \
 x(bi_depth,   32) \
 x(bi_inodes_32bit,  8) \
 x(bi_casefold,   8)

/* subset of BCH_INODE_FIELDS */
#define BCH_INODE_OPTS()   \
 x(data_checksum,  8) \
 x(compression,   8) \
 x(project,   32) \
 x(background_compression, 8) \
 x(data_replicas,  8) \
 x(promote_target,  16) \
 x(foreground_target,  16) \
 x(background_target,  16) \
 x(erasure_code,   16) \
 x(nocow,   8) \
 x(inodes_32bit,   8) \
 x(casefold,   8)

enum inode_opt_id {
#define x(name, ...)    \
 Inode_opt_##name,
 BCH_INODE_OPTS()
#undef  x
 Inode_opt_nr,
};

/*
 * BCH_INODE_has_case_insensitive is set if any descendent is case insensitive -
 * for overlayfs
 */

#define BCH_INODE_FLAGS()   \
 x(sync,    0) \
 x(immutable,   1) \
 x(append,   2) \
 x(nodump,   3) \
 x(noatime,   4) \
 x(i_size_dirty,   5) \
 x(i_sectors_dirty,  6) \
 x(unlinked,   7) \
 x(backptr_untrusted,  8) \
 x(has_child_snapshot,  9) \
 x(has_case_insensitive,  10)

/* bits 20+ reserved for packed fields below: */

enum bch_inode_flags {
#define x(t, n) BCH_INODE_##t = 1U << n,
 BCH_INODE_FLAGS()
#undef x
};

enum __bch_inode_flags {
#define x(t, n) __BCH_INODE_##t = n,
 BCH_INODE_FLAGS()
#undef x
};

LE32_BITMASK(INODEv1_STR_HASH, struct bch_inode, bi_flags, 20, 24);
LE32_BITMASK(INODEv1_NR_FIELDS, struct bch_inode, bi_flags, 24, 31);
LE32_BITMASK(INODEv1_NEW_VARINT,struct bch_inode, bi_flags, 31, 32);

LE64_BITMASK(INODEv2_STR_HASH, struct bch_inode_v2, bi_flags, 20, 24);
LE64_BITMASK(INODEv2_NR_FIELDS, struct bch_inode_v2, bi_flags, 24, 31);

LE64_BITMASK(INODEv3_STR_HASH, struct bch_inode_v3, bi_flags, 20, 24);
LE64_BITMASK(INODEv3_NR_FIELDS, struct bch_inode_v3, bi_flags, 24, 31);

LE64_BITMASK(INODEv3_FIELDS_START,
    struct bch_inode_v3, bi_flags, 31, 36);
LE64_BITMASK(INODEv3_MODE, struct bch_inode_v3, bi_flags, 36, 52);

struct bch_inode_alloc_cursor {
 struct bch_val  v;
 __u8   bits;
 __u8   pad;
 __le32   gen;
 __le64   idx;
};

#endif /* _BCACHEFS_INODE_FORMAT_H */

Messung V0.5 in Prozent
C=95 H=93 G=93

[Seitenstruktur0.19Druckenetwas mehr zur Ethik2026-04-29]