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 BEF57C47DD9 for ; Fri, 22 Mar 2024 21:41:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1698A6B0083; Fri, 22 Mar 2024 17:41:47 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0F1AB6B0096; Fri, 22 Mar 2024 17:41:47 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EADC66B0098; Fri, 22 Mar 2024 17:41:46 -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 D45D46B0093 for ; Fri, 22 Mar 2024 17:41:46 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id AAA5140602 for ; Fri, 22 Mar 2024 21:41:46 +0000 (UTC) X-FDA: 81925997412.04.44ED3C7 Received: from mail-ua1-f44.google.com (mail-ua1-f44.google.com [209.85.222.44]) by imf01.hostedemail.com (Postfix) with ESMTP id 1D08740010 for ; Fri, 22 Mar 2024 21:41:44 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=ejwQXLee; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf01.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.222.44 as permitted sender) smtp.mailfrom=21cnbao@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1711143705; a=rsa-sha256; cv=none; b=rXnVfREkG+OyB8tOnBUC6Yb5TgJOgW1vqyN/GEnwMxKnhL2VvfHIFdXD0cm4CRPYMTRAPM hahSOiIdqjctos5Q0k8gyKbj+plT+qeWnM1R2kA0gLhAFpwE7tk6Kzw1Lbt27WID0CWok+ iPYIRh2yfapXb+cer+SlJxpBAVMs0u8= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=ejwQXLee; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf01.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.222.44 as permitted sender) smtp.mailfrom=21cnbao@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1711143705; 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=RQll5QYZhzufGj+S1fYXa+jgiDZDq7VQ1QzparuV7Ek=; b=DuwnYcyRAwZuZJgK3JcY8Q2Y8xuWKYCmRV4FhAg5fjxQJqNcPWBh3IAZocTkWZmdsqYGzF ysaw1gCg81Qhh7F2HzCQS7OCFlr9vl5p3EYVOZn7TaoDIC/vfwp+a0enUum9VfJwfArqTG QTANl/VhfNisgvJ8+Ix+uLDZbhWHHP4= Received: by mail-ua1-f44.google.com with SMTP id a1e0cc1a2514c-7e09ba2ac02so1255971241.1 for ; Fri, 22 Mar 2024 14:41:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1711143704; x=1711748504; 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=RQll5QYZhzufGj+S1fYXa+jgiDZDq7VQ1QzparuV7Ek=; b=ejwQXLeeIHpECuCjeTarwiASyIi3GePTvKXwTrIqt/MkPB/+XDLFPzah+mPHfcCZD8 T4rn4qancQ1g41F/yYGBTHMTjU9DZwSuWFHT9WsoLjbLG4gjv6SZH8lJKol7sy7UTd6m x17uqTv/B2PRYDTi6V8q5ydmEoIJG5JGGuihKUfIAx2eTtQQHLLKhsynUcYpmKZm1XwA Mkz90M/0hIQLVsSttjFQgOuHzxwbxVsILyXR8a8Yaxgn16HNvOViAnm0XxTTTBHHCnZi NqeDTY+rJhJNtpR8TqOPolS9Dzp0WlKmsrl62MlrHCh1pplDP/m22751TJVpouE8tFkp +pTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711143704; x=1711748504; 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=RQll5QYZhzufGj+S1fYXa+jgiDZDq7VQ1QzparuV7Ek=; b=f5FFhWSOGFIJ5Mn2YrR2weL7Z0xJemfye2iheGKPjV+gEkhnD+cnIbxx8wgmeC6jow 5TC9EkfTrXzK9AyAIU+E5GmZ8FWdSK0k7ycjNl7TpOmrWpwiryFqvj27VDhFE1Lg0d4K wyqmLe+pcsR3UXU5Qs8d0K+gHMNm7BFYc80SRi4qZv1/SUifkELfxmdrm6T7msb2JWNA Dvq1SKyjyhz+mFeRnWrv9wldhVrjz7I2TbVQ3uzDavFDioPbBOweTcTJeV/IMb86bt4G xIn/lA99pftU6a8x+P32tdfF8WB8Ps5wnZQjmrhq940jwW5nMOw3E/GR6bqgmBS2Cp3u rwMw== X-Forwarded-Encrypted: i=1; AJvYcCXF2/1lr5oRBsdFSJN5SNiHvn4AdsbJAtrxu+2mB7hDVgtOrHt6p4Zr5+/KUOAg4pu+YdXms6tnENGzOADL99A66fU= X-Gm-Message-State: AOJu0YzJJon2FkToQFzoW7Cz/TwkbOwTNIY11VDzr/USFJRsDbhkG7Xb fJ55edRlLytf4YDH1X9azYpghDInN/uE3iwllizkb3LuGWOvIQrYELQ1Ty9l7ivnEVCH59kWAx6 LNQdUgbCo2h/sk6UqxA9V4avSfd8= X-Google-Smtp-Source: AGHT+IEv9fJIOeOrs93WlB1QNmSJh28TuaydQyrjMI4d8y02To3CTcqsbR+SmmiDpNQBw6ucVRiADjzXkF8yR9BNSCo= X-Received: by 2002:a05:6102:f0d:b0:473:2d91:c4d5 with SMTP id v13-20020a0561020f0d00b004732d91c4d5mr988952vss.25.1711143704130; Fri, 22 Mar 2024 14:41:44 -0700 (PDT) MIME-Version: 1.0 References: <20240322163939.17846-1-chengming.zhou@linux.dev> In-Reply-To: From: Barry Song <21cnbao@gmail.com> Date: Sat, 23 Mar 2024 10:41:32 +1300 Message-ID: Subject: Re: [RFC PATCH] mm: add folio in swapcache if swapin from zswap To: Yosry Ahmed Cc: chengming.zhou@linux.dev, hannes@cmpxchg.org, nphamcs@gmail.com, akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Zhongkun He Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 1D08740010 X-Stat-Signature: syxrntusz6whd9cgkyhzxchndm3qaz9h X-HE-Tag: 1711143704-741530 X-HE-Meta: U2FsdGVkX193qlOBjh1TMjqGhnUWecn/wSrIF64pBTTdkHeiqmfLX+NhUTyeeOp25vNEJSSJE8zzVQszvhX+WviAizMzDyPsbTL0mm0G4x9JWeIo8cqlzLRW9JKepwqUIDXeRNc/KPY/76TKbbh57taKwieB2OYGy+wpAWauHI0YcqIK2Gbl2yfciO3NZfXTI1EXbTeROCJBdLnB1Tx4+xxf+b2Vq0/Fq7t0yh7tfqITPQOMEXNw1sLeeKCvZOvR3lqXZizNkPCaLCdasv92vi1w3v7tIzPts4cWb45vinbyHi2Ml2p5PRtcq6lr0hAhJDdwFwUSqiJdKdFDbAW6f3MwhlqrG+LzhNL5ZJZWk612ngPnYfy2KcIPeB2Gk0wY7jRV3FyoRjb/b3u28P5CEoEmUZ73pZcqsLj4u8w5HReKSX8Kno/EXZGX7A2oP3UHpzuXRLIC73vLvdoL4F41LOCf3wA4empWpdKu4VOCA/kiO5j9bpECYBG1MsKJMGbLzSwo41iEtbBV8fJnQ2xH/M8xv5NXbVfNYAWFCCJE5ifVvOAOV8MlAE1k1UZxxdAH6GcEuXwC6s4/YR949sx0MWlopa521pUyo7+TNPElT5+s7beM8CM+3PBIXbyYn+s55dSKxV1teWKvP7UDWUkyq41gvtGB+Za3HJrf987But14udDFZ1kvvPz4YVhb13DltnQXJq+qCCZ21X1EoKug81nTHJjfnyWZll6wREmNOh5XBBCjCTuUWVPO4A8X7FF8Ies4yHV210acTlbd/MeRZOcaAqaHpGutlZ8d3olPCUzl4KUIkgXTJejQacUgcXIfCTNFybdvi9mE9UJbiv2feoutbToNbEq5WqtIXecMvwIVOznSgJsj11kG5HDMi7h726PSZjNE8Cby9UbY5ojnMzVEr+/i1OlstwZe/YiDUwSin1FWoFMCdZDQBkuEi5J89enKwVF69d+yGT93MF2 7Dw== 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 Sat, Mar 23, 2024 at 8:38=E2=80=AFAM Yosry Ahmed = wrote: > > On Fri, Mar 22, 2024 at 9:40=E2=80=AFAM wrote: > > > > From: Chengming Zhou > > > > There is a report of data corruption caused by double swapin, which is > > only possible in the skip swapcache path on SWP_SYNCHRONOUS_IO backends= . > > > > The root cause is that zswap is not like other "normal" swap backends, > > it won't keep the copy of data after the first time of swapin. So if I don't quite understand this, so once we load a page from zswap, zswap will free it even though do_swap_page might not set it to PTE? shouldn't zswap free the memory after notify_free just like zram? > > the folio in the first time of swapin can't be installed in the pagetab= le > > successfully and we just free it directly. Then in the second time of > > swapin, we can't find anything in zswap and read wrong data from swapfi= le, > > so this data corruption problem happened. > > > > We can fix it by always adding the folio into swapcache if we know the > > pinned swap entry can be found in zswap, so it won't get freed even tho= ugh > > it can't be installed successfully in the first time of swapin. > > A concurrent faulting thread could have already checked the swapcache > before we add the folio to it, right? In this case, that thread will > go ahead and call swap_read_folio() anyway. > > Also, I suspect the zswap lookup might hurt performance. Would it be > better to add the folio back to zswap upon failure? This should be > detectable by checking if the folio is dirty as I mentioned in the bug > report thread. I don't like the idea either as sync-io is the fast path for zram etc. or, can we use the way of zram to free compressed data? >