diff options
author | Darrick J. Wong <djwong@kernel.org> | 2023-08-10 16:48:04 +0200 |
---|---|---|
committer | Darrick J. Wong <djwong@kernel.org> | 2023-08-10 16:48:04 +0200 |
commit | 3934e8ebb7cc6e5f1ade35d586ed3eb79b88eb95 (patch) | |
tree | 0322e0d24d10c1249754b3dd7c34c6df292c762a /fs/xfs/Makefile | |
parent | xfs: use per-AG bitmaps to reap unused AG metadata blocks during repair (diff) | |
download | linux-3934e8ebb7cc6e5f1ade35d586ed3eb79b88eb95.tar.xz linux-3934e8ebb7cc6e5f1ade35d586ed3eb79b88eb95.zip |
xfs: create a big array data structure
Create a simple 'big array' data structure for storage of fixed-size
metadata records that will be used to reconstruct a btree index. For
repair operations, the most important operations are append, iterate,
and sort.
Earlier implementations of the big array used linked lists and suffered
from severe problems -- pinning all records in kernel memory was not a
good idea and frequently lead to OOM situations; random access was very
inefficient; and record overhead for the lists was unacceptably high at
40-60%.
Therefore, the big memory array relies on the 'xfile' abstraction, which
creates a memfd file and stores the records in page cache pages. Since
the memfd is created in tmpfs, the memory pages can be pushed out to
disk if necessary and we have a built-in usage limit of 50% of physical
memory.
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Kent Overstreet <kent.overstreet@linux.dev>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Diffstat (limited to 'fs/xfs/Makefile')
-rw-r--r-- | fs/xfs/Makefile | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/xfs/Makefile b/fs/xfs/Makefile index 0a5cebb9802b..f175f823fcd4 100644 --- a/fs/xfs/Makefile +++ b/fs/xfs/Makefile @@ -164,6 +164,8 @@ xfs-y += $(addprefix scrub/, \ rmap.o \ scrub.o \ symlink.o \ + xfarray.o \ + xfile.o \ ) xfs-$(CONFIG_XFS_RT) += scrub/rtbitmap.o |