summaryrefslogtreecommitdiff
tag namefix-iunlink-list-6.6_2023-09-12 (42403d66fbf14e045fca6fea135ef1bbe152b27b)
tag date2023-09-12 10:34:49 -0700
tagged byDarrick J. Wong <djwong@kernel.org>
tagged objectcommit 49813a21ed...
xfs: reload entire iunlink lists
This is the second part of correcting XFS to reload the incore unlinked inode list from the ondisk contents. Whereas part one tackled failures from regular filesystem calls, this part takes on the problem of needing to reload the entire incore unlinked inode list on account of somebody loading an inode that's in the /middle/ of an unlinked list. This happens during quotacheck, bulkstat, or even opening a file by handle. In this case we don't know the length of the list that we're reloading, so we don't want to create a new unbounded memory load while holding resources locked. Instead, we'll target UNTRUSTED iget calls to reload the entire bucket. Note that this changes the definition of the incore unlinked inode list slightly -- i_prev_unlinked == 0 now means "not on the incore list". This has been lightly tested with fstests. Enjoy! Signed-off-by: Darrick J. Wong <djwong@kernel.org> -----BEGIN PGP SIGNATURE----- iHUEABYKAB0WIQQ2qTKExjcn+O1o2YRKO3ySh0YRpgUCZQChOQAKCRBKO3ySh0YR ptU6AP48lONiOPzWvF1mXTnDosAtIDsfliMY+qVgVxrghqBFmwEAitHlOadpWonu yoQ3cnSqzfA4rKT5MQZCm2iIHH/LMgU= =Kp5V -----END PGP SIGNATURE-----