Re: [PATCH] btrfs: simplify read_extent_buffer_pages a bit

Johannes Thumshirn
2019-04-16T09:16:36Z

On Thu, Apr 11, 2019 at 06:59:35PM +0200, David Sterba wrote:
> On Thu, Apr 11, 2019 at 06:40:59PM +0200, Johannes Thumshirn wrote:
> > Currently read_extent_buffer_pages() uses a 4 pass algorithm to read an
> > extent buffer's pages from disk, all 4 stages looping over all pages of
> > the extent buffer.
> >
> > 1) Loop over all pages and lock them.
> > 2) Loop over all pages and see if one is not marked as PageUptodate, so we
> > can break out of the function early.
> > 3) Loop over all pages and if the page is !PageUptodate read the page,
> > otherwise unlock the page.
> > 4) Loop over all pages and wait for stable pages.
> >
> > Unify the 1st two for loops, we can count the number of uptodate pages
> > after we have locked them without the need for re-starting the loop.
>
> Effectively reverting 2571e739677f1e4c0c63f5ed49adcc0857923625 that
> fixed a bug. Please have a look if something has really changed so that
> the split loops are no longer necessary.

After starring at the .s and .lst files GCC produces I cannot say whether this
holds true or not.

But as it was fixing a bug back then, I'll take back this patch.

--
Johannes Thumshirn SUSE Labs Filesystems
jthumshirn@suse.de +49 911 74053 689
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: Felix Imendörffer, Mary Higgins, Sri Rasiah
HRB 21284 (AG Nürnberg)
Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850