Message ID | 170250783054.1398986.4495796106537845155.stgit@frogsfrogsfrogs (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | xfs: prepare repair for bulk loading | expand |
On Wed, Dec 13, 2023 at 02:52:13PM -0800, Darrick J. Wong wrote: > From: Darrick J. Wong <djwong@kernel.org> > > The btree bulkloading code calls xfs_buf_delwri_queue_here when it has > finished formatting a new btree block and wants to queue it to be > written to disk. Once the new btree root has been committed, the blocks > (and hence the buffers) will be accessible to the rest of the > filesystem. Mark each new buffer as DONE when adding it to the delwri > list so that the next btree traversal can skip reloading the contents > from disk. Looks good: Reviewed-by: Christoph Hellwig <hch@lst.de>
diff --git a/fs/xfs/libxfs/xfs_btree_staging.c b/fs/xfs/libxfs/xfs_btree_staging.c index 29e3f8ccb185..1c5f9ed70c3e 100644 --- a/fs/xfs/libxfs/xfs_btree_staging.c +++ b/fs/xfs/libxfs/xfs_btree_staging.c @@ -342,6 +342,12 @@ xfs_btree_bload_drop_buf( if (*bpp == NULL) return; + /* + * Mark this buffer XBF_DONE (i.e. uptodate) so that a subsequent + * xfs_buf_read will not pointlessly reread the contents from the disk. + */ + (*bpp)->b_flags |= XBF_DONE; + xfs_buf_delwri_queue_here(*bpp, buffers_list); xfs_buf_relse(*bpp); *bpp = NULL;