From: "Garg, Shivank" <shivankg@amd.com>
To: "Huang, Ying" <ying.huang@linux.alibaba.com>
Cc: akpm@linux-foundation.org, david@kernel.org,
lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com,
vbabka@kernel.org, willy@infradead.org, rppt@kernel.org,
surenb@google.com, mhocko@suse.com, ziy@nvidia.com,
matthew.brost@intel.com, joshua.hahnjy@gmail.com,
rakie.kim@sk.com, byungchul@sk.com, gourry@gourry.net,
apopple@nvidia.com, dave@stgolabs.net,
Jonathan.Cameron@huawei.com, rkodsara@amd.com, vkoul@kernel.org,
bharata@amd.com, sj@kernel.org, weixugc@google.com,
dan.j.williams@intel.com, rientjes@google.com,
xuezhengchu@huawei.com, yiannis@zptcorp.com,
dave.hansen@intel.com, hannes@cmpxchg.org, jhubbard@nvidia.com,
peterx@redhat.com, riel@surriel.com, shakeel.butt@linux.dev,
stalexan@redhat.com, tj@kernel.org, nifan.cxl@gmail.com,
linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [RFC PATCH v4 2/6] mm/migrate: skip data copy for already-copied folios
Date: Thu, 23 Apr 2026 17:50:31 +0530 [thread overview]
Message-ID: <8da0580e-b5f9-41a0-870e-fb4c41a00aa3@amd.com> (raw)
In-Reply-To: <87pl4bfej5.fsf@DESKTOP-5N7EMDA>
On 4/7/2026 12:22 PM, Huang, Ying wrote:
> "Garg, Shivank" <shivankg@amd.com> writes:
>
>> On 3/24/2026 1:52 PM, Huang, Ying wrote:
>>> Shivank Garg <shivankg@amd.com> writes:
>>>
>>
>>>> static int move_to_new_folio(struct folio *dst, struct folio *src,
>>>> - enum migrate_mode mode)
>>>> + enum migrate_mode mode, bool already_copied)
>>>> {
>>>> struct address_space *mapping = folio_mapping(src);
>>>> int rc = -EAGAIN;
>>>> @@ -1096,6 +1114,9 @@ static int move_to_new_folio(struct folio *dst, struct folio *src,
>>>> VM_BUG_ON_FOLIO(!folio_test_locked(src), src);
>>>> VM_BUG_ON_FOLIO(!folio_test_locked(dst), dst);
>>>>
>>>> + if (already_copied)
>>>> + dst->private = (void *)(unsigned long)PAGE_ALREADY_COPIED;
>>>> +
>>>
>>> IMHO, this appears to be an unusual way to pass arguments to a function.
>>> Why not adjust the parameters of migrate_folio()? How about turning enum
>>> migrate_mode into a bitmask (migrate_flags)?
>>>
>>
>> Using folio->private, keeps the change self-contained in migrate.c
>>
>> David suggested adding a dedicated unsigned long migrate_info field in the
>> folio union. I'll switch to that, as this is cleaner and avoid hacky use of ->private.
>>
>> https://lore.kernel.org/linux-mm/27b1b602-129f-4bc5-a553-386e8d1f5d90@kernel.org
>
> That's good for the original usage of folio->private. That is, to
> record migration related information for a list of folios.
>
>>
>> Changing the migrate_folio() a_ops signature would touch nearly every
>> filesystem for something that only core migration cares about, and does not look
>> practical. We can't add to migrate_mode enum either as currently those values are mutually
>> exclusive and ordered levels of increasing synchrony (ASYNC < SYNC_LIGHT < SYNC)
>> And there are checks like this (cc->mode < MIGRATE_SYNC) or mode != MIGRATE_SYNC
>> This could break it.
>
> IMHO, code readability is more important than limiting the scope of
> changes. The migrate_folio callback of most file systems shares a few
> common implementations in migrate.c. So, I think it is doable.
>
I agree. For v5, I'll go with the folio union, where I avoid touching the filesystem callbacks,
which felt like too much churn at this point.
If it doesn't read well we can revisit the callback signature.
Thanks,
Shivank
next prev parent reply other threads:[~2026-04-23 12:20 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-09 12:07 [RFC PATCH v4 0/6] Accelerate page migration with batch copying and hardware offload Shivank Garg
2026-03-09 12:07 ` [RFC PATCH v4 1/6] mm: introduce folios_mc_copy() for batch folio copying Shivank Garg
2026-03-12 9:41 ` David Hildenbrand (Arm)
2026-03-15 18:09 ` Garg, Shivank
2026-03-09 12:07 ` [RFC PATCH v4 2/6] mm/migrate: skip data copy for already-copied folios Shivank Garg
2026-03-12 9:44 ` David Hildenbrand (Arm)
2026-03-15 18:25 ` Garg, Shivank
2026-03-23 12:20 ` David Hildenbrand (Arm)
2026-03-24 8:22 ` Huang, Ying
2026-04-03 11:08 ` Garg, Shivank
2026-04-07 6:52 ` Huang, Ying
2026-04-23 12:20 ` Garg, Shivank [this message]
2026-03-09 12:07 ` [RFC PATCH v4 3/6] mm/migrate: add batch-copy path in migrate_pages_batch Shivank Garg
2026-03-24 8:42 ` Huang, Ying
2026-04-03 11:09 ` Garg, Shivank
2026-03-09 12:07 ` [RFC PATCH v4 4/6] mm/migrate: add copy offload registration infrastructure Shivank Garg
2026-03-09 17:54 ` Gregory Price
2026-03-10 10:07 ` Garg, Shivank
2026-03-24 10:54 ` Huang, Ying
2026-04-03 11:11 ` Garg, Shivank
2026-04-07 7:40 ` Huang, Ying
2026-04-28 12:10 ` Garg, Shivank
2026-04-30 1:23 ` Huang, Ying
2026-03-09 12:07 ` [RFC PATCH v4 5/6] drivers/migrate_offload: add DMA batch copy driver (dcbm) Shivank Garg
2026-03-09 18:04 ` Gregory Price
2026-03-12 9:33 ` Garg, Shivank
2026-03-24 8:10 ` Huang, Ying
2026-04-03 11:06 ` Garg, Shivank
2026-04-23 12:10 ` Garg, Shivank
2026-04-23 14:13 ` Vinod Koul
2026-04-24 11:26 ` Garg, Shivank
2026-03-09 12:07 ` [RFC PATCH v4 6/6] mm/migrate: adjust NR_MAX_BATCHED_MIGRATION for testing Shivank Garg
2026-03-18 14:29 ` [RFC PATCH v4 0/6] Accelerate page migration with batch copying and hardware offload Garg, Shivank
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=8da0580e-b5f9-41a0-870e-fb4c41a00aa3@amd.com \
--to=shivankg@amd.com \
--cc=Jonathan.Cameron@huawei.com \
--cc=Liam.Howlett@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=apopple@nvidia.com \
--cc=bharata@amd.com \
--cc=byungchul@sk.com \
--cc=dan.j.williams@intel.com \
--cc=dave.hansen@intel.com \
--cc=dave@stgolabs.net \
--cc=david@kernel.org \
--cc=gourry@gourry.net \
--cc=hannes@cmpxchg.org \
--cc=jhubbard@nvidia.com \
--cc=joshua.hahnjy@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lorenzo.stoakes@oracle.com \
--cc=matthew.brost@intel.com \
--cc=mhocko@suse.com \
--cc=nifan.cxl@gmail.com \
--cc=peterx@redhat.com \
--cc=rakie.kim@sk.com \
--cc=riel@surriel.com \
--cc=rientjes@google.com \
--cc=rkodsara@amd.com \
--cc=rppt@kernel.org \
--cc=shakeel.butt@linux.dev \
--cc=sj@kernel.org \
--cc=stalexan@redhat.com \
--cc=surenb@google.com \
--cc=tj@kernel.org \
--cc=vbabka@kernel.org \
--cc=vkoul@kernel.org \
--cc=weixugc@google.com \
--cc=willy@infradead.org \
--cc=xuezhengchu@huawei.com \
--cc=yiannis@zptcorp.com \
--cc=ying.huang@linux.alibaba.com \
--cc=ziy@nvidia.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox