All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@infradead.org>
To: Matthew Wilcox <willy@infradead.org>
Cc: Christoph Hellwig <hch@infradead.org>,
	linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	"Darrick J . Wong" <darrick.wong@oracle.com>,
	linux-block@vger.kernel.org, linux-mm@kvack.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 04/11] block: Add bio_for_each_thp_segment_all
Date: Tue, 1 Sep 2020 15:50:25 +0100	[thread overview]
Message-ID: <20200901145025.GA23220@infradead.org> (raw)
In-Reply-To: <20200901130525.GK14765@casper.infradead.org>

On Tue, Sep 01, 2020 at 02:05:25PM +0100, Matthew Wilcox wrote:
> > >                 struct page *page = bvec->bv_page;
> > > 
> > >                 while (length > 0) { 
> > >                         size_t count = thp_size(page) - offset;
> > >                         
> > >                         if (count > length)
> > >                                 count = length;
> > >                         iomap_read_page_end_io(page, offset, count, error);
> > >                         page += (offset + count) / PAGE_SIZE;
> > 
> > Shouldn't the page_size here be thp_size?
> 
> No.  Let's suppose we have a 20kB I/O which starts on a page boundary and
> the first page is order-2.  To get from the first head page to the second
> page, we need to add 4, which is 16kB / 4kB, not 16kB / 16kB.

True.

> I'm not entirely sure the bvec would shrink.  On 64-bit systems, it's
> currently 8 bytes for the struct page, 4 bytes for the len and 4 bytes
> for the offset.  Sure, we can get rid of the offset, but the compiler
> will just pad the struct from 12 bytes back to 16.  On 32-bit systems
> with 32-bit phys_addr_t, we go from 12 bytes down to 8, but most 32-bit
> systems have a 64-bit phys_addr_t these days, don't they?

Actually on those system that still are 32-bit because they are so
tiny I'd very much still expect a 32-bit phys_addr_t.  E.g. arm
without LPAE or 32-bit RISC-V.

But yeah, point taken on the alignment for the 64-bit ones.

> That's a bit more boilerplate than I'd like, but if bio_vec is going to
> lose its bv_page then I don't see a better way.  Unless we come up with
> a different page/offset/length struct that bio_vecs are decomposed into.

I'm not sure it is going to lose bv_page any time soon.  I'd sure like
to, but least time something like that came up Linus wasn't entirely
in favor.  Things might have changed now, though and I think it is about
time to give it another try.

  reply	other threads:[~2020-09-01 14:50 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-24 15:16 [PATCH 00/11] iomap/fs/block patches for 5.11 Matthew Wilcox (Oracle)
2020-08-24 15:16 ` [PATCH 01/11] fs: Make page_mkwrite_check_truncate thp-aware Matthew Wilcox (Oracle)
2020-08-24 15:16 ` [PATCH 02/11] mm: Support THPs in zero_user_segments Matthew Wilcox (Oracle)
2020-08-24 15:16 ` [PATCH 03/11] mm: Zero the head page, not the tail page Matthew Wilcox (Oracle)
2020-08-24 15:16 ` [PATCH 04/11] block: Add bio_for_each_thp_segment_all Matthew Wilcox (Oracle)
2020-08-27  8:44   ` Christoph Hellwig
2020-08-31 19:48     ` Matthew Wilcox
2020-09-01  5:34       ` Christoph Hellwig
2020-09-01 13:05         ` Matthew Wilcox
2020-09-01 14:50           ` Christoph Hellwig [this message]
2020-08-24 15:16 ` [PATCH 05/11] iomap: Support THPs in iomap_adjust_read_range Matthew Wilcox (Oracle)
2020-08-24 15:16 ` [PATCH 06/11] iomap: Support THPs in invalidatepage Matthew Wilcox (Oracle)
2020-08-24 15:16 ` [PATCH 07/11] iomap: Support THPs in read paths Matthew Wilcox (Oracle)
2020-08-24 15:16 ` [PATCH 08/11] iomap: Change iomap_write_begin calling convention Matthew Wilcox (Oracle)
2020-08-24 15:16 ` [PATCH 09/11] iomap: Support THPs in write paths Matthew Wilcox (Oracle)
2020-08-24 15:16 ` [PATCH 10/11] iomap: Inline data shouldn't see THPs Matthew Wilcox (Oracle)
2020-08-24 15:17 ` [PATCH 11/11] iomap: Handle tail pages in iomap_page_mkwrite Matthew Wilcox (Oracle)
2020-08-25 10:29 ` [PATCH 00/11] iomap/fs/block patches for 5.11 William Kucharski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200901145025.GA23220@infradead.org \
    --to=hch@infradead.org \
    --cc=darrick.wong@oracle.com \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-xfs@vger.kernel.org \
    --cc=willy@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.