Merge tag 'big-array-6.6_2023-08-10' of https://git.kernel.org/pub/scm/linux/kernel...
authorChandan Babu R <chandan.babu@oracle.com>
Fri, 18 Aug 2023 07:19:06 +0000 (12:49 +0530)
committerChandan Babu R <chandan.babu@oracle.com>
Fri, 18 Aug 2023 07:19:06 +0000 (12:49 +0530)
xfs: stage repair information in pageable memory

In general, online repair of an indexed record set walks the filesystem
looking for records.  These records are sorted and bulk-loaded into a
new btree.  To make this happen without pinning gigabytes of metadata in
memory, first create an abstraction ('xfile') of memfd files so that
kernel code can access paged memory, and then an array abstraction
('xfarray') based on xfiles so that online repair can create an array of
new records without pinning memory.

These two data storage abstractions are critical for repair of space
metadata -- the memory used is pageable, which helps us avoid pinning
kernel memory and driving OOM problems; and they are byte-accessible
enough that we can use them like (very slow and programmatic) memory
buffers.

Later patchsets will build on this functionality to provide blob storage
and btrees.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
* tag 'big-array-6.6_2023-08-10' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux:
  xfs: improve xfarray quicksort pivot
  xfs: cache pages used for xfarray quicksort convergence
  xfs: speed up xfarray sort by sorting xfile page contents directly
  xfs: teach xfile to pass back direct-map pages to caller
  xfs: convert xfarray insertion sort to heapsort using scratchpad memory
  xfs: enable sorting of xfile-backed arrays
  xfs: create a big array data structure


Trivial merge