From: Usama Arif <usama.arif@linux.dev>
To: Yosry Ahmed <yosry@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
david@kernel.org, chrisl@kernel.org, kasong@tencent.com,
ljs@kernel.org, ziy@nvidia.com, linux-mm@kvack.org,
ying.huang@linux.alibaba.com, Baoquan He <baoquan.he@linux.dev>,
willy@infradead.org, youngjun.park@lge.com, hannes@cmpxchg.org,
riel@surriel.com, shakeel.butt@linux.dev, alex@ghiti.fr,
kas@kernel.org, baohua@kernel.org, dev.jain@arm.com,
baolin.wang@linux.alibaba.com, npache@redhat.com,
"Liam R. Howlett" <liam@infradead.org>,
ryan.roberts@arm.com, Vlastimil Babka <vbabka@kernel.org>,
lance.yang@linux.dev, linux-kernel@vger.kernel.org,
nphamcs@gmail.com, shikemeng@huaweicloud.com,
kernel-team@meta.com, Alexandre Ghiti <alexghiti@fb.com>
Subject: Re: [PATCH v4 04/11] mm: zswap: add range lookup for large-folio swapin
Date: Mon, 13 Jul 2026 17:29:36 +0100 [thread overview]
Message-ID: <da9458cd-f039-4c7b-9e00-a473b05aa3b2@linux.dev> (raw)
In-Reply-To: <CAO9r8zNVnwAS-6jOQtGrcN_fq8C+6kRiiRX4=kp9h=fTC+XYNQ@mail.gmail.com>
On 13/07/2026 17:02, Yosry Ahmed wrote:
>> /**
>> * zswap_load() - load a folio from zswap
>> * @folio: folio to load
>> @@ -1571,10 +1588,9 @@ bool zswap_store(struct folio *folio)
>> * NOT marked up-to-date, so that an IO error is emitted (e.g. do_swap_page()
>> * will SIGBUS).
>> *
>> - * -EINVAL: if the swapped out content was in zswap, but the page belongs
>> - * to a large folio, which is not supported by zswap. The folio is unlocked,
>> - * but NOT marked up-to-date, so that an IO error is emitted (e.g.
>> - * do_swap_page() will SIGBUS).
>> + * -EIO: if a slot in a large-folio range is unexpectedly still in zswap.
>> + * The folio is unlocked, but NOT marked up-to-date, so that an IO
>> + * error is emitted (e.g. do_swap_page() will SIGBUS).
>
> Just curious, why the change from -EINVAL to -EIO here? Does it matter
> in practice or is it just a matter of personal taste? :)
The caller only checks for != -ENOENT so no functional difference here. I viewed
it as a change in semantic, -EINVAL meant that you passed a large folio, which
wasn't supported to -EIO meaning the request is valid but zswap cannot safely
complete a PMD-sized read from per-page compressed state.
I dont want to speak for Alexandre, will let him comment on this properly :)
But above is what I thought of when I got the patch from Alex.
>
>> *
>> * -ENOENT: if the swapped out content was not in zswap. The folio remains
>> * locked on return.
>> @@ -1593,13 +1609,19 @@ int zswap_load(struct folio *folio)
>> return -ENOENT;
>>
>> /*
>> - * Large folios should not be swapped in while zswap is being used, as
>> - * they are not properly handled. Zswap does not properly load large
>> - * folios, and a large folio may only be partially in zswap.
>> + * A large folio reaches zswap_load() only when its whole range is
>> + * expected to be on disk: PMD swap-entry consumers split before
>> + * calling into PMD-order swapin whenever any slot is still in zswap.
>> + * Confirm the range is entirely absent from zswap and return -ENOENT
>> + * so the caller reads it from disk; if a slot is unexpectedly still in
>> + * zswap, fail the read rather than return partially-initialized data.
>> */
>> - if (WARN_ON_ONCE(folio_test_large(folio))) {
>> - folio_unlock(folio);
>> - return -EINVAL;
>> + if (folio_test_large(folio)) {
>> + if (zswap_is_present(swp, folio_nr_pages(folio))) {
>> + folio_unlock(folio);
>> + return -EIO;
>> + }
>> + return -ENOENT;
>> }
>>
>> entry = xa_load(tree, offset);
>> --
>> 2.53.0-Meta
>>
next prev parent reply other threads:[~2026-07-13 16:29 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-13 13:35 [PATCH v4 00/11] mm: PMD-level swap entries for anonymous THPs Usama Arif
2026-07-13 13:35 ` [PATCH v4 01/11] mm: add PMD swap entry detection support Usama Arif
2026-07-13 13:35 ` [PATCH v4 02/11] mm: add PMD swap entry splitting support Usama Arif
2026-07-13 13:35 ` [PATCH v4 03/11] mm: handle PMD swap entries in fork path Usama Arif
2026-07-13 13:35 ` [PATCH v4 04/11] mm: zswap: add range lookup for large-folio swapin Usama Arif
2026-07-13 16:02 ` Yosry Ahmed
2026-07-13 16:29 ` Usama Arif [this message]
2026-07-13 16:55 ` Yosry Ahmed
2026-07-14 10:00 ` Usama Arif
2026-07-13 13:35 ` [PATCH v4 05/11] mm: swap in PMD swap entries as whole THPs during swapoff Usama Arif
2026-07-13 13:35 ` [PATCH v4 06/11] mm: handle PMD swap entries in non-present PMD walkers Usama Arif
2026-07-13 13:35 ` [PATCH v4 07/11] mm: handle PMD swap entries in MADV_WILLNEED Usama Arif
2026-07-13 13:35 ` [PATCH v4 08/11] mm: handle PMD swap entries in UFFDIO_MOVE Usama Arif
2026-07-13 13:35 ` [PATCH v4 09/11] mm: handle PMD swap entry faults on swap-in Usama Arif
2026-07-13 13:35 ` [PATCH v4 10/11] mm: install PMD swap entries on swap-out Usama Arif
2026-07-13 13:35 ` [PATCH v4 11/11] selftests/mm: add PMD swap entry tests Usama Arif
2026-07-13 15:56 ` [PATCH v4 00/11] mm: PMD-level swap entries for anonymous THPs Yosry Ahmed
2026-07-13 16:17 ` Usama Arif
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=da9458cd-f039-4c7b-9e00-a473b05aa3b2@linux.dev \
--to=usama.arif@linux.dev \
--cc=akpm@linux-foundation.org \
--cc=alex@ghiti.fr \
--cc=alexghiti@fb.com \
--cc=baohua@kernel.org \
--cc=baolin.wang@linux.alibaba.com \
--cc=baoquan.he@linux.dev \
--cc=chrisl@kernel.org \
--cc=david@kernel.org \
--cc=dev.jain@arm.com \
--cc=hannes@cmpxchg.org \
--cc=kas@kernel.org \
--cc=kasong@tencent.com \
--cc=kernel-team@meta.com \
--cc=lance.yang@linux.dev \
--cc=liam@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=ljs@kernel.org \
--cc=npache@redhat.com \
--cc=nphamcs@gmail.com \
--cc=riel@surriel.com \
--cc=ryan.roberts@arm.com \
--cc=shakeel.butt@linux.dev \
--cc=shikemeng@huaweicloud.com \
--cc=vbabka@kernel.org \
--cc=willy@infradead.org \
--cc=ying.huang@linux.alibaba.com \
--cc=yosry@kernel.org \
--cc=youngjun.park@lge.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 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.