summaryrefslogtreecommitdiff
tag namebig-array_2022-11-09 (d91e1cde0de00558cc9f79182e665322d20c4b11)
tag date2022-11-09 19:09:54 -0800
tagged byDarrick J. Wong <djwong@kernel.org>
tagged objectcommit 5ff6cdc9e0...
xfs: large arrays of 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. Signed-off-by: Darrick J. Wong <djwong@kernel.org> -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEUzaAxoMeQq6m2jMV+H93GTRKtOsFAmNsa4IACgkQ+H93GTRK tOtLww/+OG0hPDFEaR2jydsJG+QxKG+TK4dlenfoqixNZpBISpgN21WUG9+7SYVK AZRFR6oy9PQ5lbbuv6PJnjfd5e3P6OgTuhK4tbnZB5qBG8YaiOE2kdrLS4cBDyVM 6skuw6sAadANgd3IrqsefUvXYV5pUql6ipC2UgS8IT+AzJ/ABdmS+CwBOuPVMnfM KfcTH73Q7fSR+glcZD9Ho7Pzv300fScGQmKAGxqXpR/wTlpzvPvYPSITgtfbsaSa DaWkSBCMPY//ny1WbKje52GpQ9R5KX4NKYQpBPVBc7DVb9x3ZqsfFppDTNSNV3y1 0O7sTKypxdEX3NzLZNjHTHLK+pUJKRtUurM1ANGYqEbarR1JzRwU2gkwIxCWkO2Q UksxjLM57Wh1b9RFHMUuJLK5ltJanPujz7hmLu41v8yHI7L3e5RHarS+n2BlkhC1 0Ygemt2O72ExLtPqxTs+RK7Dqdc4luwFC+C2IslK0E0f6YxWJZaXkb6Udur0QtBq NT1Ps3q+OGj62dnSrh76LQrYzazpr4IJMYdKFBdXNi/PXthL9JSDmGNmd3O7QwJP Bak1+XKJQVYBRXk35jSIF3Z9l6NFUdK0a4tct82/mv7bMv7pj5eKJkc0mGu/triN X5ZiCzdUOSG/xoVB9r2q9wyc8l6UWOAughmQTj/t9IUjEX8SCFA= =MIzD -----END PGP SIGNATURE-----