fs/btrfs/ordered-data.h
Source file repositories/reference/linux-study-clean/fs/btrfs/ordered-data.h
File Facts
- System
- Linux kernel
- Corpus path
fs/btrfs/ordered-data.h- Extension
.h- Size
- 7176 bytes
- Lines
- 235
- Domain
- Core OS
- Bucket
- VFS And Filesystem Core
- Inferred role
- Core OS: implementation source
- Status
- source implementation candidate
Why This File Exists
Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/types.hlinux/list.hlinux/refcount.hlinux/completion.hlinux/rbtree.hlinux/wait.hasync-thread.h
Detected Declarations
struct inodestruct pagestruct extent_statestruct btrfs_block_groupstruct btrfs_inodestruct btrfs_rootstruct btrfs_fs_infostruct btrfs_ordered_sumstruct btrfs_ordered_extentstruct btrfs_file_extentfunction btrfs_start_ordered_extent
Annotated Snippet
struct btrfs_ordered_sum {
/*
* Logical start address and length for of the blocks covered by
* the sums array.
*/
u64 logical;
u32 len;
struct list_head list;
/* last field is a variable length array of csums */
u8 sums[];
};
/*
* Bits for btrfs_ordered_extent::flags.
*
* BTRFS_ORDERED_IO_DONE is set when all of the blocks are written.
* It is used to make sure metadata is inserted into the tree only once
* per extent.
*
* BTRFS_ORDERED_COMPLETE is set when the extent is removed from the
* rbtree, just before waking any waiters. It is used to indicate the
* IO is done and any metadata is inserted into the tree.
*/
enum {
/* Extra status bits for ordered extents */
/* Set when all the pages are written. */
BTRFS_ORDERED_IO_DONE,
/* Set when removed from the tree. */
BTRFS_ORDERED_COMPLETE,
/* We had an io error when writing this out. */
BTRFS_ORDERED_IOERR,
/* Set when we have to truncate an extent. */
BTRFS_ORDERED_TRUNCATED,
/* Used during fsync to track already logged extents. */
BTRFS_ORDERED_LOGGED,
/* We have already logged all the csums of the ordered extent. */
BTRFS_ORDERED_LOGGED_CSUM,
/* We wait for this extent to complete in the current transaction. */
BTRFS_ORDERED_PENDING,
/*
* Different types for ordered extents, one and only one of these types
* need to be set when creating ordered extent.
*
* REGULAR: For regular non-compressed COW write
* NOCOW: For NOCOW write into existing non-hole extent
* PREALLOC: For NOCOW write into preallocated extent
* COMPRESSED: For compressed COW write
*/
BTRFS_ORDERED_REGULAR,
BTRFS_ORDERED_NOCOW,
BTRFS_ORDERED_PREALLOC,
BTRFS_ORDERED_COMPRESSED,
/* Extra bit for encoded write, must be set with COMPRESSED. */
BTRFS_ORDERED_ENCODED,
/*
* Extra bit for direct io, can only be set for
* REGULAR/NOCOW/PREALLOC. Must not be set for COMPRESSED nor ENCODED.
*/
BTRFS_ORDERED_DIRECT,
BTRFS_ORDERED_NR_FLAGS,
};
static_assert(BTRFS_ORDERED_NR_FLAGS <= BITS_PER_LONG);
/* One and only one flag can be set. */
#define BTRFS_ORDERED_EXCLUSIVE_FLAGS ((1UL << BTRFS_ORDERED_REGULAR) | \
(1UL << BTRFS_ORDERED_NOCOW) | \
(1UL << BTRFS_ORDERED_PREALLOC) | \
(1UL << BTRFS_ORDERED_COMPRESSED))
/* BTRFS_ORDERED_* flags that specify the type of the extent. */
#define BTRFS_ORDERED_TYPE_FLAGS (BTRFS_ORDERED_EXCLUSIVE_FLAGS | \
(1UL << BTRFS_ORDERED_DIRECT) | \
(1UL << BTRFS_ORDERED_ENCODED))
struct btrfs_ordered_extent {
/* logical offset in the file */
u64 file_offset;
/*
* These fields directly correspond to the same fields in
* btrfs_file_extent_item.
*/
u64 num_bytes;
u64 ram_bytes;
Annotation
- Immediate include surface: `linux/types.h`, `linux/list.h`, `linux/refcount.h`, `linux/completion.h`, `linux/rbtree.h`, `linux/wait.h`, `async-thread.h`.
- Detected declarations: `struct inode`, `struct page`, `struct extent_state`, `struct btrfs_block_group`, `struct btrfs_inode`, `struct btrfs_root`, `struct btrfs_fs_info`, `struct btrfs_ordered_sum`, `struct btrfs_ordered_extent`, `struct btrfs_file_extent`.
- Atlas domain: Core OS / VFS And Filesystem Core.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.