mbox series

[0/3] add page_ext_data to get client data in page_ext

Message ID 20230718145812.1991717-1-shikemeng@huaweicloud.com (mailing list archive)
Headers show
Series add page_ext_data to get client data in page_ext | expand

Message

Kemeng Shi July 18, 2023, 2:58 p.m. UTC
Current client get data from page_ext by adding offset which is auto
generated in page_ext core and expose the data layout design insdie
page_ext core. This series adds a page_ext_data to hide offset from
client. Thanks!

Kemeng Shi (3):
  mm/page_ext: add common function to get client data from page_ext
  mm/page_ext: use page_ext_data helper in page_table_check
  mm/page_ext: use page_ext_data helper in page_owner

 include/linux/page_ext.h | 6 ++++++
 mm/page_owner.c          | 2 +-
 mm/page_table_check.c    | 2 +-
 3 files changed, 8 insertions(+), 2 deletions(-)

Comments

Mike Rapoport July 19, 2023, 9:44 a.m. UTC | #1
On Tue, Jul 18, 2023 at 10:58:09PM +0800, Kemeng Shi wrote:
> Current client get data from page_ext by adding offset which is auto
> generated in page_ext core and expose the data layout design insdie
> page_ext core. This series adds a page_ext_data to hide offset from
> client. Thanks!

Implementers of page_ext_operations are anyway intimately related to
page_ext, so I'm not convinced this has any value.
 
> Kemeng Shi (3):
>   mm/page_ext: add common function to get client data from page_ext
>   mm/page_ext: use page_ext_data helper in page_table_check
>   mm/page_ext: use page_ext_data helper in page_owner
> 
>  include/linux/page_ext.h | 6 ++++++
>  mm/page_owner.c          | 2 +-
>  mm/page_table_check.c    | 2 +-
>  3 files changed, 8 insertions(+), 2 deletions(-)
> 
> -- 
> 2.30.0
> 
>
Kemeng Shi July 20, 2023, 2:38 a.m. UTC | #2
on 7/19/2023 5:44 PM, Mike Rapoport wrote:
> On Tue, Jul 18, 2023 at 10:58:09PM +0800, Kemeng Shi wrote:
>> Current client get data from page_ext by adding offset which is auto
>> generated in page_ext core and expose the data layout design insdie
>> page_ext core. This series adds a page_ext_data to hide offset from
>> client. Thanks!
> 
> Implementers of page_ext_operations are anyway intimately related to
> page_ext, so I'm not convinced this has any value.
>  
Hi Mike, thanks for reply. I thinks page_ext_operations can be futher splited
into public part which used by client to simply register and private part which
only page_ext core cares and should not be accessed by client directly
to reduce decoupling. This series makes offset to be private which client
doesn't really care to hide data layout inside page_ext core from client.
There are some concrete gains I can list for now:
1. Future client cound call page_ext_data directly instead of define a
new function like get_page_owner to get it's data.
2. No change to client if layout of page_ext data change.
I hope this could be more convincing to you now.
Thanks!
Mike Rapoport July 20, 2023, 5:37 a.m. UTC | #3
Hi,

On Thu, Jul 20, 2023 at 10:38:39AM +0800, Kemeng Shi wrote:
> 
> on 7/19/2023 5:44 PM, Mike Rapoport wrote:
> > On Tue, Jul 18, 2023 at 10:58:09PM +0800, Kemeng Shi wrote:
> >> Current client get data from page_ext by adding offset which is auto
> >> generated in page_ext core and expose the data layout design insdie
> >> page_ext core. This series adds a page_ext_data to hide offset from
> >> client. Thanks!
> > 
> > Implementers of page_ext_operations are anyway intimately related to
> > page_ext, so I'm not convinced this has any value.
> >  
> Hi Mike, thanks for reply. I thinks page_ext_operations can be futher splited
> into public part which used by client to simply register and private part which
> only page_ext core cares and should not be accessed by client directly
> to reduce decoupling.

It would be easier to justify changes in this series if they were a part of
the refactoring you describe here.

> This series makes offset to be private which client
> doesn't really care to hide data layout inside page_ext core from client.
> There are some concrete gains I can list for now:
> 1. Future client cound call page_ext_data directly instead of define a
> new function like get_page_owner to get it's data.
> 2. No change to client if layout of page_ext data change.

These should be a part of the changelog.

> I hope this could be more convincing to you now.
> Thanks!
> 
> -- 
> Best wishes
> Kemeng Shi
>
Kemeng Shi July 20, 2023, 8:37 a.m. UTC | #4
on 7/20/2023 1:37 PM, Mike Rapoport wrote:
> Hi,
> 
> On Thu, Jul 20, 2023 at 10:38:39AM +0800, Kemeng Shi wrote:
>>
>> on 7/19/2023 5:44 PM, Mike Rapoport wrote:
>>> On Tue, Jul 18, 2023 at 10:58:09PM +0800, Kemeng Shi wrote:
>>>> Current client get data from page_ext by adding offset which is auto
>>>> generated in page_ext core and expose the data layout design insdie
>>>> page_ext core. This series adds a page_ext_data to hide offset from
>>>> client. Thanks!
>>>
>>> Implementers of page_ext_operations are anyway intimately related to
>>> page_ext, so I'm not convinced this has any value.
>>>  
>> Hi Mike, thanks for reply. I thinks page_ext_operations can be futher splited
>> into public part which used by client to simply register and private part which
>> only page_ext core cares and should not be accessed by client directly
>> to reduce decoupling.
> 
> It would be easier to justify changes in this series if they were a part of
> the refactoring you describe here.
Actually, it's not the refactoring trigger this. I found offset used
in client code while I could not find intialization of offset in client.
After some search, I found how offset is generated in page_ext core and
it's more like a page_ext internal behavior. Feel it's better to reduce
dependency from upper level client to low level internal implementation.

>> This series makes offset to be private which client
>> doesn't really care to hide data layout inside page_ext core from client.
>> There are some concrete gains I can list for now:
>> 1. Future client cound call page_ext_data directly instead of define a
>> new function like get_page_owner to get it's data.
>> 2. No change to client if layout of page_ext data change.
> 
> These should be a part of the changelog.
Yes, it's better to highlight the gains. This series was taken into the tree.
I'm not sure if I need send a v2 to include this or Andrew could add this
when code merged to more stable tree.
>> I hope this could be more convincing to you now.
>> Thanks!
>>
>> -- 
>> Best wishes
>> Kemeng Shi
>>
>
Andrew Morton Aug. 11, 2023, 9:39 p.m. UTC | #5
On Thu, 20 Jul 2023 08:37:36 +0300 Mike Rapoport <rppt@kernel.org> wrote:

> Hi,
> 
> On Thu, Jul 20, 2023 at 10:38:39AM +0800, Kemeng Shi wrote:
> > 
> > on 7/19/2023 5:44 PM, Mike Rapoport wrote:
> > > On Tue, Jul 18, 2023 at 10:58:09PM +0800, Kemeng Shi wrote:
> > >> Current client get data from page_ext by adding offset which is auto
> > >> generated in page_ext core and expose the data layout design insdie
> > >> page_ext core. This series adds a page_ext_data to hide offset from
> > >> client. Thanks!
> > > 
> > > Implementers of page_ext_operations are anyway intimately related to
> > > page_ext, so I'm not convinced this has any value.
> > >  
> > Hi Mike, thanks for reply. I thinks page_ext_operations can be futher splited
> > into public part which used by client to simply register and private part which
> > only page_ext core cares and should not be accessed by client directly
> > to reduce decoupling.
> 
> It would be easier to justify changes in this series if they were a part of
> the refactoring you describe here.
> 
> > This series makes offset to be private which client
> > doesn't really care to hide data layout inside page_ext core from client.
> > There are some concrete gains I can list for now:
> > 1. Future client cound call page_ext_data directly instead of define a
> > new function like get_page_owner to get it's data.
> > 2. No change to client if layout of page_ext data change.
> 
> These should be a part of the changelog.
> 

I added this to the [0/N]:

: Benefits include:
: 
: 1. Future clients can call page_ext_data directly instead of defining
:    a new function like get_page_owner to get the data.
: 
: 2. There is no change to clients if the layout of page_ext data changes.

Mike, what is your position on this patchset now?

Thanks.
Mike Rapoport Aug. 15, 2023, 6:43 a.m. UTC | #6
On Fri, Aug 11, 2023 at 02:39:29PM -0700, Andrew Morton wrote:
> On Thu, 20 Jul 2023 08:37:36 +0300 Mike Rapoport <rppt@kernel.org> wrote:
> 
> > Hi,
> > 
> > On Thu, Jul 20, 2023 at 10:38:39AM +0800, Kemeng Shi wrote:
> > > 
> > > on 7/19/2023 5:44 PM, Mike Rapoport wrote:
> > > > On Tue, Jul 18, 2023 at 10:58:09PM +0800, Kemeng Shi wrote:
> > > >> Current client get data from page_ext by adding offset which is auto
> > > >> generated in page_ext core and expose the data layout design insdie
> > > >> page_ext core. This series adds a page_ext_data to hide offset from
> > > >> client. Thanks!
> > > > 
> > > > Implementers of page_ext_operations are anyway intimately related to
> > > > page_ext, so I'm not convinced this has any value.
> > > >  
> > > Hi Mike, thanks for reply. I thinks page_ext_operations can be futher splited
> > > into public part which used by client to simply register and private part which
> > > only page_ext core cares and should not be accessed by client directly
> > > to reduce decoupling.
> > 
> > It would be easier to justify changes in this series if they were a part of
> > the refactoring you describe here.
> > 
> > > This series makes offset to be private which client
> > > doesn't really care to hide data layout inside page_ext core from client.
> > > There are some concrete gains I can list for now:
> > > 1. Future client cound call page_ext_data directly instead of define a
> > > new function like get_page_owner to get it's data.
> > > 2. No change to client if layout of page_ext data change.
> > 
> > These should be a part of the changelog.
> > 
> 
> I added this to the [0/N]:
> 
> : Benefits include:
> : 
> : 1. Future clients can call page_ext_data directly instead of defining
> :    a new function like get_page_owner to get the data.
> : 
> : 2. There is no change to clients if the layout of page_ext data changes.
> 
> Mike, what is your position on this patchset now?

I'm fine with it, so if it's not too much hassle to add it now

Acked-by: Mike Rapoport (IBM) <rppt@kernel.org>

 
> Thanks.