From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 90646C27C55 for ; Mon, 10 Jun 2024 17:36:35 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1C6316B009A; Mon, 10 Jun 2024 13:36:35 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 176E96B009B; Mon, 10 Jun 2024 13:36:35 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0165C6B009C; Mon, 10 Jun 2024 13:36:34 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id D35886B009A for ; Mon, 10 Jun 2024 13:36:34 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 55230C1151 for ; Mon, 10 Jun 2024 17:36:34 +0000 (UTC) X-FDA: 82215683508.15.3B8BE37 Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.50]) by imf28.hostedemail.com (Postfix) with ESMTP id 7749DC0021 for ; Mon, 10 Jun 2024 17:36:32 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="oOocd0/9"; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf28.hostedemail.com: domain of yosryahmed@google.com designates 209.85.208.50 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1718040992; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=dU1wp/8ID9GZkzO9MN6hzBQi84cW9f85LsgOI6MzdBM=; b=pQ7Tz9DSxHDhJ53BF1TtOl7wSfgJEMaOr2RwMyVq7Bt2eaTKgFQ32Cd2+sAtFOd5tC6vPD 7BA7J7nUX22FhwQ1Vyq2JT/wFMoeRIf1ynfcKYmg9KBs4kTB69mzx5GwZqSZSogwWwBV3a z3UVLA1tGmTWRxcVCDtCxlipM9XszLg= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="oOocd0/9"; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf28.hostedemail.com: domain of yosryahmed@google.com designates 209.85.208.50 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1718040992; a=rsa-sha256; cv=none; b=pkg0a2Zc2oGGsc1i7uIlISPdvwQFdwG9eu1KKb19vaV5AV5XLQevpxlQhmK1/pzYQjku/V qgak3vtQQ/9W6Km6nQPOgFeDFqmUv9cUaewKah28jgYm+QSJGxASbefge901936c8psyF9 gjdd6Scdia6bPzx5ci8nD0gx4A3xdIo= Received: by mail-ed1-f50.google.com with SMTP id 4fb4d7f45d1cf-57c7681ccf3so2057297a12.2 for ; Mon, 10 Jun 2024 10:36:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1718040991; x=1718645791; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=dU1wp/8ID9GZkzO9MN6hzBQi84cW9f85LsgOI6MzdBM=; b=oOocd0/9t0TNEGOp9xURkNmPV7fl+DTrJbUCqx9kSVIeUKDGx5WoGYGrfGIADr5Wii xMMnszRX78NsLu6iFvp4pS38kqwdBkSDNWsRN8GbEFxijl7oMqE/uFOW3irRsjW6Sogb ETNqz7s3reB2HpcUMQ/JtNGcKHpd4Jznzafa3jb3QMGpAowf/8gNy8E260lxxSP3wAOx 3eDNzJGjff/VVp4eqqGFtDtNKXqhPOgGpu1AgmK5b9rhM3WSEZf8NEDPND9j70FjGe2o y6I5GeTQTibxfdvh9zTj5JNoFozcLTZql9VnwwPq7GwMQC2EyShRb6IGtQq+lno8nHQG MDZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718040991; x=1718645791; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=dU1wp/8ID9GZkzO9MN6hzBQi84cW9f85LsgOI6MzdBM=; b=kMMVtDNBTFbBdd76asktwPxdtZyZ8SLau4wMfJYmz2qwEWE+rytGqVx+lWhIJDOSP1 qyvOVQOxED7IoLzokWjML3PWn2sURpPqWle9XSf2cfY9wPSmspQK2EWxKs9CADCVYzIu t0ZvCz49naigcGoReQgH5Z5z2/pzJDM9ZZHCdKvtpF0zPWpWkdt1UumcVYpCzJlHxpIA O7dfW2mgBOMz1CN+HZAfA8g5IIEd4R2IAGZbsC0PUnyzPb+IkCCSUlHISzKuKh+/p+ck /nIRdgk/0W2boRoG2LISqFlV85O3M93jR7upUHWdrdgygUY+ubd+5eR16ZJTr4DOU4NL /+Gw== X-Forwarded-Encrypted: i=1; AJvYcCUKueSX/1XQhXt5Wy9mgIBAE63KPE11ZGp+dCWfTtFvSQ5jC6mPGjcjyjflmg3KXu6caDYhtjn1BknQ47bYJvsAGaU= X-Gm-Message-State: AOJu0Yyby/x634IveXc0NwA4fe/UIbicSHhYfhiW6AElwKffa4IrDlsO gqT1W8sp3BOTKgH2JsF6D9YTZcLpcq2S0cdzZ/FmbKG24VqGr6cOUe0GdI0PODO7Hn6JP4Mlja+ QurdXCA+hR5twbctdHlMArGQLUtxQ+eYuYdL5 X-Google-Smtp-Source: AGHT+IGFJqcSp8XShUaYALJ4Wx844rcf/dAaD5tsaciA5uNA6+bXzdDsjJKkkmvkFTaD/iDvHjV/GNRzuOlKzPKT1+g= X-Received: by 2002:a17:906:52d8:b0:a6e:f7b5:3189 with SMTP id a640c23a62f3a-a6ef7b539c6mr508030966b.76.1718040990435; Mon, 10 Jun 2024 10:36:30 -0700 (PDT) MIME-Version: 1.0 References: <20240608023654.3513385-1-yosryahmed@google.com> <2821278f-bc94-c147-d0fe-8cc52dbdccb1@redhat.com> In-Reply-To: <2821278f-bc94-c147-d0fe-8cc52dbdccb1@redhat.com> From: Yosry Ahmed Date: Mon, 10 Jun 2024 10:35:54 -0700 Message-ID: Subject: Re: [PATCH v2] mm: zswap: handle incorrect attempts to load of large folios To: =?UTF-8?Q?Mika_Penttil=C3=A4?= Cc: Andrew Morton , Johannes Weiner , Nhat Pham , Chengming Zhou , Baolin Wang , Barry Song <21cnbao@gmail.com>, Chris Li , Ryan Roberts , David Hildenbrand , Matthew Wilcox , linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 7749DC0021 X-Stat-Signature: 7sba3hmwoc8hamua1gjrcwdj7oyz9z4s X-HE-Tag: 1718040992-107295 X-HE-Meta: U2FsdGVkX1/shbCsBdgzNYCd0i4jnTdSFNqA7PSyrHvoBlUZxAgX9lrwMbDnZgj4nytDlwrPFD3nXq49ccNYfz7Tf07FK7sZs7Rw+fEnDXZIuaf1Q8AWwd2EZIkYZ05fn/Wct96Mm0PaJ1y7m31HRcb1YiNyhbbRPVhY9SPgZPC1tfmlduBgMUuwi1OKFvwHjbRHnkxE84jjpG/JOm7GPFz5wpN+thYEt9SsvFf1DI87DKBznobXhXqerex/1hyupaQh3rUDuXsVLFXDKMsV8Vt+YB6FGnpULmIUc2ftK5OpxUZGAvV+SjgA7v+grD7fEwlXB6qLLEa5qvStn1GLM2yHkt8HuctUFQPaxxpe5/kimggFBvbTqim1WmvPRwSFrPjKvZrseQpcFZSBVsdXOnAGtOYXwjCMKVIa9JcRdJUpy2Wfesn4mQpp6anNhnvdWBFMAdkIbXsKbG/fP/pTGkYoEPJTzghMyYPfnzvq8du7J+GLzNNU+MjfDN2Mv3wc/DYiDY3Kbpz838MTySx82fHAmmTCWsFb3gdqM4ZYcV8M5t36l259Y+tM3lW7ZMsQYMWlQ7s7du8SRh/GXkbx81sryMOPdrYENVcR2Ehqpm+BuKW+h/r7qZVmeSYD0lp6RXPRfewf9bbD4u4FG3lq8ug5OJnUtiNVV0P0g9gnM8Q+zg7cAaqx8c4AvPtHkp2jkdgwGIuUWqelAwwcH5GH3G03O2hwqJndVj8EBrN59VGvj7eA2dKFXNFKKPeFJFgVCmok3KLcDmc0hzMOpjGCdWxQS5iJz2qIz14EaR8Zb7lwM44c5nYf8yNdIniexseY8lvTI3cBzhfU7LDPFko8eQuQ8OmP3W7CWV6wruEo3JJa0eZb+mqzdDqSJQKOfWFuyqZHwrSwFhkudK4hOtI4+6AScSmNwbkAhIn8EhHwMqcALA8AIaMxxa36W4Io9TVI4MjgRTnz4+aho/D+NNA YZDKn38C 1e6cUyTz+MZkZT5oupGmg/83T/RVAQYW1FjYMFgCsizIVqk4W1A9qwAsALXsfsjKuLWM3YSC5UNU+S/KdaNYVPUkueImtAVZi6bbyYtFtJnCYdiVKscj8xi7zbj9pk4gmUSJiLZIqeOC3i+0mhuhLDWDwRZnP12+m+PvWRsJOzyMDvM+LXdUL9ITNh7Mb1plKI6wy8KlFbWtw7yodDeBF2kIZRh5uowlf/TNhIRioUJw6AIEvkZKiHnt+Tg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Fri, Jun 7, 2024 at 9:08=E2=80=AFPM Mika Penttil=C3=A4 wrote: > > On 6/8/24 05:36, Yosry Ahmed wrote: > > diff --git a/mm/zswap.c b/mm/zswap.c > > index b9b35ef86d9be..ebb878d3e7865 100644 > > --- a/mm/zswap.c > > +++ b/mm/zswap.c > > @@ -1557,6 +1557,26 @@ bool zswap_load(struct folio *folio) > > > > VM_WARN_ON_ONCE(!folio_test_locked(folio)); > > > > + /* > > + * Large folios should not be swapped in while zswap is being use= d, as > > + * they are not properly handled. Zswap does not properly load la= rge > > + * folios, and a large folio may only be partially in zswap. > > + * > > + * If any of the subpages are in zswap, reading from disk would r= esult > > + * in data corruption, so return true without marking the folio u= ptodate > > + * so that an IO error is emitted (e.g. do_swap_page() will sigfa= ult). > > + * > > + * Otherwise, return false and read the folio from disk. > > + */ > > + if (folio_test_large(folio)) { > > + if (xa_find(tree, &offset, > > + offset + folio_nr_pages(folio) - 1, XA_PRESEN= T)) { > > + WARN_ON_ONCE(1); > > + return true; > > + } > > How does that work? Should it be xa_find_after() to not always find > current entry? By "current entry" I believe you mean the entry corresponding to "offset" (i.e. the first subpage of the folio). At this point, we haven't checked if that offset has a corresponding entry in zswap or not. It may be on disk, or zwap may be disabled. > > And does it still mean those subsequent entries map to same folio? If I understand correctly, a folio in the swapcache has contiguous swap offsets for its subpages. So I am assuming that the large folio swapin case will adhere to that (i.e. we only swapin a large folio if the swap offsets are contiguous). Did I misunderstand something here? > > > --Mika > >