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 3CB60C7EE26 for ; Tue, 23 May 2023 01:38:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 964FE6B0072; Mon, 22 May 2023 21:38:01 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 915B3900002; Mon, 22 May 2023 21:38:01 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7DD6B6B0075; Mon, 22 May 2023 21:38:01 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 6C5486B0072 for ; Mon, 22 May 2023 21:38:01 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 407AEADFBB for ; Tue, 23 May 2023 01:38:01 +0000 (UTC) X-FDA: 80819808762.28.31E9A63 Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.49]) by imf20.hostedemail.com (Postfix) with ESMTP id 643091C000B for ; Tue, 23 May 2023 01:37:59 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=wTpwRB6U; spf=pass (imf20.hostedemail.com: domain of yosryahmed@google.com designates 209.85.218.49 as permitted sender) smtp.mailfrom=yosryahmed@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1684805879; 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=0NL8vu8VBVPDg4x9BcHt1EVriPSKQTsOTL4qlCVnshw=; b=eejquYZsG5bU338O1xCdkQcjPyNLAgri7vd0SrxVXvk3dZMF35vPq6qX4UxxtHuUVrRhgY 3kNv9+lZmWlJR5l+RzNQpH3nkY/TbTPtBCU/Bsa+5wTO8pyg0v3bleiNOG+ESCxid2S0Y1 EUFVkbu7cyBdBPsAbBoIMJ+zk2t9TFc= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1684805879; a=rsa-sha256; cv=none; b=3hAkaHaNXjZpTueIP5Cmqi91yYNywBClhl6REcHphUgEKDTC7KpdvRnIY1YTtjG56FjjQs c261aHUB4jd8rN+Pjqh1JR2XmyCEh8JX1MT7NuZjMlO8O4kTSAlINkHPKfL8PDs64xP+vN 1iJ4m2yyq5pnPGWLArWfAUGlupQ0NRI= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=wTpwRB6U; spf=pass (imf20.hostedemail.com: domain of yosryahmed@google.com designates 209.85.218.49 as permitted sender) smtp.mailfrom=yosryahmed@google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-ej1-f49.google.com with SMTP id a640c23a62f3a-96fb45a5258so489690966b.2 for ; Mon, 22 May 2023 18:37:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1684805878; x=1687397878; 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=0NL8vu8VBVPDg4x9BcHt1EVriPSKQTsOTL4qlCVnshw=; b=wTpwRB6UoOOPzch2bukvysP5VjZ+AbcBIlgsG/SqE45ZxBbf2nXV/11IP7HP820SNT 93OmpccUwJkgBtq9us2bSqCgpb1OwgY4s7QsmOsCl74L/3x30+K+4oUS1JUyzjor16jA RAbdPGALr9MG0L2IHsZTCCXmSWkm/BaWovUgIhpfU2hFoinM+ztpxEw/WYN0p1v3dnt5 1VR6zDRIZfxuNy1GPP36jnvmwVy1DULydYrh+i+PqpJsr9yOfIFrDlsTUQN0LVoQ+ops pNS1PKyDTG+Y+rdm7zbHPiget97OyE9ueAWrzs1PGND9mGRBVbexxMmkUNwI4PXzaqyr ocgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684805878; x=1687397878; 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=0NL8vu8VBVPDg4x9BcHt1EVriPSKQTsOTL4qlCVnshw=; b=jLxPBI3fUnNAoPv1J629/dgQWFB01YdH+Rkozi4kYik/YCRlUAdzzfRFTOHziPMeCU CTzqeRSVYSQmqergEJZVXTemBoRmZha8rbdjkOVptJEuQjEwMO2T6rT9jFuhSYOo6QA9 zDpTzJueMJG48QuBlSpXnm2CgZj42wy1qEQbP0puqsAu4d6h6cxTyuIb6uAbXxkQtk/Q aOSDPHyCCefYmcYvqbLwcbhAf5KsVCsQZ15bbu/ZaGSVnrpHwyp25FKZGIRnnhO3stPE a7J4jAROQ4IdEi7dEM4J5p5TVYHN6Y+DA1bszEiojfkEyOgZhsHKbYs2vu0uu+ysJ5/I 7taQ== X-Gm-Message-State: AC+VfDwphuwP15EDPRJVI3Ocpx365HvGFGv0pofw4A6cZcclwuk92YxS +wkqxz1pjGyMWnxnne+Yo1tutS6YbKnbJfhdb1p02Q== X-Google-Smtp-Source: ACHHUZ5kUzwUSGf4F6uXfzN4mxvSFIq6nOPaFYpP9NQsoqdanwYd4KHOtQf1Ky9F8NwZItK6VPWk7oPjCtqDRvAoQ5s= X-Received: by 2002:a17:907:2d28:b0:970:d85:59e9 with SMTP id gs40-20020a1709072d2800b009700d8559e9mr3706447ejc.5.1684805877754; Mon, 22 May 2023 18:37:57 -0700 (PDT) MIME-Version: 1.0 References: <20230522070905.16773-1-ying.huang@intel.com> <20230522070905.16773-6-ying.huang@intel.com> In-Reply-To: <20230522070905.16773-6-ying.huang@intel.com> From: Yosry Ahmed Date: Mon, 22 May 2023 18:37:21 -0700 Message-ID: Subject: Re: [PATCH -V2 5/5] swap: comments get_swap_device() with usage rule To: Huang Ying Cc: Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org, David Hildenbrand , Hugh Dickins , Johannes Weiner , Matthew Wilcox , Michal Hocko , Minchan Kim , Tim Chen , Yang Shi , Yu Zhao Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 643091C000B X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: cd8kcxqq9je6m347treqshzz7p1ojwmt X-HE-Tag: 1684805879-707635 X-HE-Meta: U2FsdGVkX19GPYJBOVRlF0oO+ptWWbun7pPFDFZStG/GCo75rxv7Gaz1wTPOg7cbTDAxSgQXsW3cWwqHpRgt7uMNpB7C1SG1Jikwe/TbFDCJz0Qdc5h23voP+CBliu0eNtzQ4vasWBQEPJHYg+T9WtE5DpneO6lQeIqpaN+WOUw7glnc/CfZTrc1LFGPzyeU9lyYxL+NzWVwNQLkNidGGXcbNEzejiWHWm4SbTanfWkfU6ULxFb0OmsRORjUPQQsAe333d+HIZ9e0kyvAFWn2MZcYixkNIM71NHSvgYJ2PrkjSGY5FQiLJYl0QrGWZliipAEFPxfQsFvfaxdGN8aB6pvBQ3z6F2NTPlMGBRTVtRBAL3eukl0ffI5It2UJBPTKH99tAg2owxoOMD7s5NGDboYwIPW6exE1ioDIOALhv5lKLB+2RCRL9uriLfCf9lM00hbF3TptssdI6BHw05SVatLXVn3PiNcemdZaGlmd8Fhm+1wqI//VhjHOri8FYc5Zoln3HlH2cuH/fZS2ntPZVfJ0jBhTt7kFjoyiMErLSRcNBgtowQiKyEj9xLcOHE8OaHFJKmIVHYNZNvZQSG2Qb6AiSiXFpdljvwcRgU57LDWOnf+iqUCgBe+EWNpBriCOdPQMhA2um/9Bj3EWJL87rBZn6IPKFFYgRmNRPQm75krfqUg/wEwnm+PgVDN0fd1rsWw6wAb0KRecMFZDr36HM5sUS8LSvKttgB3ScWNtGzYFuTarbNY4Xq6p+7qeqjyUwcafyjJ1fGr7ycdmfmW60y1LuvhxS6SgGdIIWJMQYC/RCygJLYToE/pqXQxhxfiVBKjQA4UwO7oizGVNhR2vDmCmJwxguQqirIhzj3beyZpSMgeEkD+qA+3IKzCqfhDkpgOd3lppXQpwGqPcTef7Cv+CfUq86xM3hEiae5r3LjoJzXaoGaOkrjZzMl2iiCRet3PXkBifzHTwFCwE5e U/03Ovsj HyMX14qsHatfemmIBU/QEm5AxiwPvrQsA7kVSEeol4QsolPyUlnsWabZq5joNoTsLmOVZ7lVFkz6wDZthAPmWBx87wnbt3lgzTt6YX1w5XWz1fZyMkN2LyzQwowVGCJ99XD/iV8YFKI9r6vwYXs+F2nVd8cp5dVk3z178FJ42RnftpHNbshON/ZiaiZciYIWtDYkK+avQK+hRozTinLIrCv16Cvqk7KWIeE6O8NRyANe7C6o14pkdy0cGiE8NwhBBhmbpVr0Iy8DX4sBMH/MqCgsHQF4v/kN7yU27liSpRb3A4hfs7LzwLNc+NIncyJMsXP1J/1WPcmFq4rPAgwptY+WEm8rdFxPhoqZ3Q4c4B1VmJgbfdMxRyqZYwZfhHoWirvt3DEhFaqU94BgLSY1fVtnt6SmZImcagCY2TUklnZ76EROJCUJ78ge8f1tex3r23KM7llmCRNB7jp/sacTc5SQ8qFwa6xRnJBW/E1Xo8vXcph54BdNDs7HbsRtSEk87c9z9YRrBM2VzMLY9zMw4zW5AyW/kpO38Er3v88Gx4ju6atEzZK2CVpEM7cG7fjK7hy06GDe2AJ5O5AlihDbBUCJOhLTxZ0AYnCVI 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: On Mon, May 22, 2023 at 12:09=E2=80=AFAM Huang Ying = wrote: > > The general rule to use a swap entry is as follows. > > When we get a swap entry, if there isn't some other way to prevent > swapoff, such as page lock for swap cache, page table lock, etc., the > swap entry may become invalid because of swapoff. Then, we need to > enclose all swap related functions with get_swap_device() and > put_swap_device(), unless the swap functions call > get/put_swap_device() by themselves. > > Add the rule as comments of get_swap_device(). > > Signed-off-by: "Huang, Ying" > Cc: David Hildenbrand > Cc: Hugh Dickins > Cc: Johannes Weiner > Cc: Matthew Wilcox > Cc: Michal Hocko > Cc: Minchan Kim > Cc: Tim Chen > Cc: Yang Shi > Cc: Yu Zhao > --- > mm/swapfile.c | 12 +++++++++--- > 1 file changed, 9 insertions(+), 3 deletions(-) > > diff --git a/mm/swapfile.c b/mm/swapfile.c > index 4dbaea64635d..0c1cb935b2eb 100644 > --- a/mm/swapfile.c > +++ b/mm/swapfile.c > @@ -1219,6 +1219,13 @@ static unsigned char __swap_entry_free_locked(stru= ct swap_info_struct *p, > } > > /* > + * When we get a swap entry, if there isn't some other way to prevent > + * swapoff, such as page lock for swap cache, page table lock, etc., > + * the swap entry may become invalid because of swapoff. Then, we > + * need to enclose all swap related functions with get_swap_device() > + * and put_swap_device(), unless the swap functions call > + * get/put_swap_device() by themselves. > + * > * Check whether swap entry is valid in the swap device. If so, > * return pointer to swap_info_struct, and keep the swap entry valid > * via preventing the swap device from being swapoff, until > @@ -1227,9 +1234,8 @@ static unsigned char __swap_entry_free_locked(struc= t swap_info_struct *p, > * Notice that swapoff or swapoff+swapon can still happen before the > * percpu_ref_tryget_live() in get_swap_device() or after the > * percpu_ref_put() in put_swap_device() if there isn't any other way > - * to prevent swapoff, such as page lock, page table lock, etc. The > - * caller must be prepared for that. For example, the following > - * situation is possible. > + * to prevent swapoff. The caller must be prepared for that. For > + * example, the following situation is possible. > * > * CPU1 CPU2 > * do_swap_page() > -- > 2.39.2 > > Thanks for clarifying the code! With David's comments: Reviewed-by: Yosry Ahmed