Fundamentals 12 min read

XFS Deep Dive: Layout, Inode Management, and Read/Write Operations

This article analyzes the XFS filesystem implementation in the Linux kernel, covering its on‑disk layout, superblock and allocation‑group structures, inode and free‑space B+ trees, operation sets (iops, fops, aops), file creation, write and read paths, logging, block layer interactions, and useful XFS utilities.

Tencent Architect
Tencent Architect
Tencent Architect
XFS Deep Dive: Layout, Inode Management, and Read/Write Operations

1. XFS Layout

The XFS layout follows the official XFS layout documentation. Each allocation group (AG) starts with a superblock; the primary superblock of AG0 stores all AG information, while secondary superblocks are used only when the primary is damaged. The second sector (AGF) manages free space using two B+ trees indexed by block number and block count. The third sector (AGI) stores inode information, allocating inodes in chunks of 64. The fourth sector (AGFL) holds a free‑list of block pointers reserved for internal use.

2. XFS Operations

XFS defines three operation sets: iops for inode metadata (size, timestamps, etc.), fops for file data read/write at the page‑cache level, and aops for direct disk‑level I/O. These are illustrated through open, read, and write calls.

3. Inode Operations and File Creation

Inode operations handle inode attribute updates, creation, lookup, linking, and file creation. The directory inode uses

dir_inode->i_ops = xfs_dir_ci_inode_operations / xfs_dir_inode_operations

(found in fs/xfs/xfs_iops.c) to set ACLs and assign the iops/fops/aops sets.

File creation checks quota availability, reserves blocks and log space, then allocates an inode via the following steps: xfs_trans_alloc: reserve blocks and log space for a transaction. xfs_trans_reserve_quota: reserve quota based on user/group/project limits. xfs_dir_ialloc: allocate the inode. xfs_trans_commit: commit the transaction to the log.

Disk‑level inode allocation involves reading the AGI structure with xfs_ialloc_read_agi, locating the inode B+‑tree root, and using xfs_ialloc_ag_alloc to allocate a new inode, handling both contiguous and spare allocations via xfs_inobt_insert and xfs_inobt_insert_sprec.

4. XFS Write Operations

Memory‑level writes use struct file_operations xfs_file_operations, while disk‑level writes use struct address_space_operations xfs_address_space_operations. Data is first written to the page cache; when dirty pages accumulate, they are flushed to disk via sync/fsync or background writeback. XFS supports three write paths: buffer I/O (with page cache), direct I/O (bypassing cache), and DAX write (for persistent memory devices).

XFS manages file extents with B+‑tree structures; each extent records logical file offset, physical block address, length, and status. The mapping is built by xfs_iread_extents and xfs_iext_lookup_extent, and actual I/O is performed by the iomap module via iomap_write_actor.

5. XFS Read Operations

Read operations start with xfs_file_iomap_begin, which obtains the iomap for the current file position. The physical block address is calculated as iomap->addr + pos - iomap->offset.

6. Xlog Mechanism

XFS uses a journaling log (xlog) to ensure consistency; log records are written before data blocks are updated.

7. Block Layer

The block layer handles I/O submission and completion. After a device finishes an I/O, a hardware interrupt triggers do_IRQ, which may raise a soft IRQ to process the request completion (e.g., blk_mq_requeue_work).

8. XFS Tools

Common XFS utilities include: mkfs.xfs: format a device with XFS. xfs_fsr: defragment a mounted XFS filesystem. xfs_bmap: display block mapping of a file. xfs_info: show filesystem information. xfs_admin: modify filesystem parameters (requires unmounted filesystem). xfs_copy: parallel copy of an XFS filesystem. xfs_metadump / xfs_mdrestore: dump and restore filesystem metadata. xfs_db: interactive debugging tool for XFS structures.

These commands allow administrators to create, inspect, maintain, and troubleshoot XFS filesystems.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

kernelstorageinodeFilesystemXFS
Tencent Architect
Written by

Tencent Architect

We share technical insights on storage, computing, and access, and explore industry-leading product technologies together.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.