All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hannes Reinecke <hare@suse.de>
To: Matthew Wilcox <willy@infradead.org>
Cc: linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	linux-mm@kvack.org
Subject: Re: [PATCH 1/5] brd: convert to folios
Date: Tue, 21 Mar 2023 16:26:26 +0100	[thread overview]
Message-ID: <0e54cc51-e667-b343-74b0-4989e28d8982@suse.de> (raw)
In-Reply-To: <ZBnGc4WbBOlnRUgd@casper.infradead.org>

On 3/21/23 16:00, Matthew Wilcox wrote:
> On Tue, Mar 07, 2023 at 09:14:27AM +0100, Hannes Reinecke wrote:
>> On 3/7/23 08:30, Matthew Wilcox wrote:
>>> On Tue, Mar 07, 2023 at 07:55:32AM +0100, Hannes Reinecke wrote:
>>>> On 3/6/23 18:37, Matthew Wilcox wrote:
>>>>> On Mon, Mar 06, 2023 at 01:01:23PM +0100, Hannes Reinecke wrote:
>>>>>> -	page = alloc_page(gfp | __GFP_ZERO | __GFP_HIGHMEM);
>>>>>> -	if (!page)
>>>>>> +	folio = folio_alloc(gfp | __GFP_ZERO, 0);
>>>>>> +	if (!folio)
>>>>>
>>>>> Did you drop HIGHMEM support on purpose?
>>>>
>>>> No; I thought that folios would be doing that implicitely.
>>>> Will be re-adding.
>>>
>>> We can't ... not all filesystems want to allocate every folio from
>>> HIGHMEM.  eg for superblocks, it often makes more sense to allocate the
>>> folio from lowmem than allocate it from highmem and keep it kmapped.
>>> The only GFP flag that folios force-set is __GFP_COMP because folios by
>>> definition are compound pages.
>>
>> Oh well.
>>
>> However, when playing with the modified brd and setting the logical&physical
>> blocksize to 16k the whole thing crashes
>> (not unexpectedly).
>> It does crash, however, in block_read_full_folio(), which rather
>> surprisingly (at least for me) is using create_page_buffers();
>> I would have expected something like create_folio_buffers().
>> Is this work in progress or what is the plan here?
> 
> Supporting folios > PAGE_SIZE in blockdev is definitely still WIP.
> I know of at least one bug, which is:
> 
> #define bh_offset(bh)           ((unsigned long)(bh)->b_data & ~PAGE_MASK)
> 
> That needs to be something like
> 
> static size_t bh_offset(const struct buffer_head *bh)
> {
> 	return (unsigned long)bh->b_data & (folio_size(bh->b_folio) - 1);
> }
> 
> I haven't done a thorough scan for folio-size problems in the block
> layer; I've just been fixing up things as I notice them.
> 
And not to mention the various instances of (PAGE_SHIFT - blkbits)
which will get happily into negative numbers for large block sizes,
resulting in interesting effects for a shift left operation ...

> Yes, create_page_buffers() should now be create_folio_buffers().  Just
> didn't get round to it yet.

Ah, so I was on the right track after all.

But I was wondering ... couldn't we use the physical block size as a 
hint on how many pages to allocate?
With that we can work on updating the stack even with existing hardware, 
and we wouldn't crash immediately if we miss the odd conversion ...

Hmm?

Cheers,

Hannes


  reply	other threads:[~2023-03-21 15:26 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-06 12:01 [PATCH 0/5] brd: Allow to change block sizes Hannes Reinecke
2023-03-06 12:01 ` [PATCH 1/5] brd: convert to folios Hannes Reinecke
2023-03-06 16:04   ` kernel test robot
2023-03-06 17:37   ` Matthew Wilcox
2023-03-07  6:55     ` Hannes Reinecke
2023-03-07  7:30       ` Matthew Wilcox
2023-03-09  3:28         ` Luis Chamberlain
     [not found]         ` <a4489f7b-912c-e68f-4a4c-c14d96026bd6@suse.de>
2023-03-21 15:00           ` Matthew Wilcox
2023-03-21 15:26             ` Hannes Reinecke [this message]
2023-03-09  2:29   ` Luis Chamberlain
2023-03-06 12:01 ` [PATCH 2/5] brd: abstract page_size conventions Hannes Reinecke
2023-03-06 12:01 ` [PATCH 3/5] brd: make sector size configurable Hannes Reinecke
2023-03-09  3:12   ` Luis Chamberlain
2023-03-20 22:52     ` Luis Chamberlain
2023-03-20 23:40       ` Martin K. Petersen
2023-03-21  0:14         ` Luis Chamberlain
2023-03-06 12:01 ` [PATCH 4/5] brd: limit maximal block size to 32M Hannes Reinecke
2023-03-06 17:40   ` Matthew Wilcox
2023-03-07  6:56     ` Hannes Reinecke
2023-03-06 18:01   ` Keith Busch
2023-03-07  6:57     ` Hannes Reinecke
2023-03-06 12:01 ` [PATCH 5/5] brd: make logical sector size configurable Hannes Reinecke
     [not found]   ` <CGME20230307090934eucas1p28d92f3fd8c13edcba8e5d3fa7de6bcab@eucas1p2.samsung.com>
2023-03-07  9:01     ` Pankaj Raghav
2023-03-07 11:06       ` Hannes Reinecke
     [not found]   ` <CGME20230517093158eucas1p2831fd21a6f66ae39c887ad91e098aa74@eucas1p2.samsung.com>
2023-05-17  9:31     ` Pankaj Raghav
     [not found] ` <CGME20230307114200eucas1p296a60514feb40c4a08f380cc28aeeb51@eucas1p2.samsung.com>
2023-03-07 11:33   ` [PATCH 0/5] brd: Allow to change block sizes Pankaj Raghav

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=0e54cc51-e667-b343-74b0-4989e28d8982@suse.de \
    --to=hare@suse.de \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-mm@kvack.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.