public inbox for linux-xfs@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v19 00/18] xfs: online repair support
@ 2019-08-05  0:34 Darrick J. Wong
  2019-08-05  0:34 ` [PATCH 01/18] xfs: add a repair revalidation function pointer Darrick J. Wong
                   ` (18 more replies)
  0 siblings, 19 replies; 20+ messages in thread
From: Darrick J. Wong @ 2019-08-05  0:34 UTC (permalink / raw)
  To: darrick.wong; +Cc: linux-xfs

Hi all,

This is the first part of the nineteenth revision of a patchset that
adds to XFS kernel support for online metadata scrubbing and repair.
There aren't any on-disk format changes.

New for this version is a rebase against 5.3-rc2, integration with the
health reporting subsystem, and the explicit revalidation of all
metadata structures that were rebuilt.

Patch 1 lays the groundwork for scrub types specifying a revalidation
function that will check everything that the repair function might have
rebuilt.  This will be necessary for the free space and inode btree
repair functions, which rebuild both btrees at once.

Patch 2 ensures that the health reporting query code doesn't get in the
way of post-repair revalidation of all rebuilt metadata structures.

Patch 3 creates a new data structure that provides an abstraction of a
big memory array by using linked lists.  This is where we store records
for btree reconstruction.  This first implementation is memory
inefficient and consumes a /lot/ of kernel memory, but lays the
groundwork for the last patch in the set to convert the implementation
to use a (memfd) swap file, which enables us to use pageable memory
without pounding the slab cache.

Patches 4-10 implement reconstruction of the free space btrees, inode
btrees, reference count btrees, inode records, inode forks, inode block
maps, and symbolic links.

Patch 11 implements a new data structure for storing arbitrary key/value
pairs, which we're going to need to reconstruct extended attribute
forks.

Patches 12-14 clean up the block unmapping code so that we will be able
to perform a mass reset of an inode's fork.  This is a key component for
salvaging extended attributes, freeing all the attr fork blocks, and
reconstructing the extended attribute data.

Patch 15 implements extended attribute salvage operations.  There is no
redundant or secondary xattr metadata, so the best we can do is trawl
through the attr leaves looking for intact entities.

Patch 16 augments scrub to rebuild extended attributes when any of the
attr blocks are fragmented.

Patch 17 implements reconstruction of quota blocks.

Patch 18 converts both in-memory array implementations from the clunky
linked list implementation to something resembling C arrays.  The array
data are backed by a (memfd) file, which means that idle data can be
paged out to disk instead of pinning kernel memory.

If you're going to start using this mess, you probably ought to just
pull from my git trees, which are linked below.

This is an extraordinary way to destroy everything.  Enjoy!
Comments and questions are, as always, welcome.

--D

kernel git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfs-linux.git/log/?h=repair-part-one

xfsprogs git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfsprogs-dev.git/log/?h=repair-part-one

fstests git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfstests-dev.git/log/?h=repair-part-one

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2019-08-05  7:21 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-08-05  0:34 [PATCH v19 00/18] xfs: online repair support Darrick J. Wong
2019-08-05  0:34 ` [PATCH 01/18] xfs: add a repair revalidation function pointer Darrick J. Wong
2019-08-05  0:34 ` [PATCH 02/18] xfs: always rescan allegedly healthy per-ag metadata after repair Darrick J. Wong
2019-08-05  0:35 ` [PATCH 03/18] xfs: create a big array data structure Darrick J. Wong
2019-08-05  0:35 ` [PATCH 04/18] xfs: repair free space btrees Darrick J. Wong
2019-08-05  0:35 ` [PATCH 05/18] xfs: repair inode btrees Darrick J. Wong
2019-08-05  0:35 ` [PATCH 06/18] xfs: repair refcount btrees Darrick J. Wong
2019-08-05  0:35 ` [PATCH 07/18] xfs: repair inode records Darrick J. Wong
2019-08-05  0:35 ` [PATCH 08/18] xfs: zap broken inode forks Darrick J. Wong
2019-08-05  0:35 ` [PATCH 09/18] xfs: repair inode block maps Darrick J. Wong
2019-08-05  0:35 ` [PATCH 10/18] xfs: repair damaged symlinks Darrick J. Wong
2019-08-05  0:35 ` [PATCH 11/18] xfs: create a blob array data structure Darrick J. Wong
2019-08-05  0:36 ` [PATCH 12/18] xfs: convert xfs_itruncate_extents_flags to use __xfs_bunmapi Darrick J. Wong
2019-08-05  0:36 ` [PATCH 13/18] xfs: remove unnecessary inode-transaction roll Darrick J. Wong
2019-08-05  0:36 ` [PATCH 14/18] xfs: create a new inode fork block unmap helper Darrick J. Wong
2019-08-05  0:36 ` [PATCH 15/18] xfs: repair extended attributes Darrick J. Wong
2019-08-05  0:36 ` [PATCH 16/18] xfs: scrub should set preen if attr leaf has holes Darrick J. Wong
2019-08-05  0:36 ` [PATCH 17/18] xfs: repair quotas Darrick J. Wong
2019-08-05  0:36 ` [PATCH 18/18] xfs: convert big array and blob array to use memfd backend Darrick J. Wong
2019-08-05  7:20 ` [PATCH v19 00/18] xfs: online repair support Dave Chinner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox