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 18EE3C47DDB for ; Tue, 23 Jan 2024 09:54:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 92A446B0082; Tue, 23 Jan 2024 04:54:44 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 8DB746B0087; Tue, 23 Jan 2024 04:54:44 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7A1306B0093; Tue, 23 Jan 2024 04:54:44 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 674B26B0082 for ; Tue, 23 Jan 2024 04:54:44 -0500 (EST) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 636C6A073D for ; Tue, 23 Jan 2024 09:54:43 +0000 (UTC) X-FDA: 81710116446.12.7034A84 Received: from mail-ed1-f43.google.com (mail-ed1-f43.google.com [209.85.208.43]) by imf18.hostedemail.com (Postfix) with ESMTP id 9B78E1C000F for ; Tue, 23 Jan 2024 09:54:41 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=todoE3bA; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf18.hostedemail.com: domain of yosryahmed@google.com designates 209.85.208.43 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=1706003681; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=k5pQ0aAjBUgS36bFeU8hxTh3VJtNzSaVjd2DImOspnw=; b=h31L5hK8qO95s1n85337pIfaCOUxseK7LuptCRUwdGSQ+0yWgeFIy4Ymy0cakHYqNDg7L4 X8qtaHHqNQnvMBYk7tv1VycErAhwFK2H6w3WnGW7AvCNvF/RM8Eq1dh+MKBTaVHS4aV6iI 5AYFi4rt1oFaWPrOVNpg43zoBMfUvVA= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=todoE3bA; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf18.hostedemail.com: domain of yosryahmed@google.com designates 209.85.208.43 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1706003681; a=rsa-sha256; cv=none; b=FHYY+NqSJBZTRXUxvX/bCM43SKXOdSy7/eQEQgce7mF9ChMgH6tvanjdJv73z+0tik8hRF Ds4Ugd18pR585GtapEhEjoT/cCRkEWBbL8qCJX/c6GrUJzSGJcHOtFgSMRGYQZJ0U2TUmh HNuMNxvnY645XbwzDmZZ0ICvB/zQk5A= Received: by mail-ed1-f43.google.com with SMTP id 4fb4d7f45d1cf-55817a12ad8so4531539a12.2 for ; Tue, 23 Jan 2024 01:54:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1706003680; x=1706608480; darn=kvack.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=k5pQ0aAjBUgS36bFeU8hxTh3VJtNzSaVjd2DImOspnw=; b=todoE3bAUdpIMdIgU+B8s3DmpbQUHahX0rDcLZzMerRu7FvFUoQHMVhDIyu/bc/q6i 05EES0ZfKHRu2RjsqXs/4f7HQ/8XnLtCzJgt0uDmtqnOJeCH6jD+O8o521V2t0cbA8ej CNe2+ZIQxqlopFLWL6IaguEKlZ7bx45DEiZ4HB2CN/mK8ZgHtW9Y6B0S3K+2a3I5ogiZ 1YJEOyVnFLse4X37x+IgCD76ke04nR2UhVXklKu3ZmXmovxe4JdrusihEybfIkrXcmiD ZBCINxQwVmqLmgOkED6gTi3n5xYVs6aaZD8WZ+XunoCeLJw028PqAioFjJGPSKkIImy3 LcMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706003680; x=1706608480; h=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=k5pQ0aAjBUgS36bFeU8hxTh3VJtNzSaVjd2DImOspnw=; b=NakJ+qxZQyir33fAQitnFXxnZCmcef52TUgzvbIEKUUykBuVaKOhSVyACVFMGP9JZT g70J9N+5TIpd2eARsR/t5M66QWc8QqG4t7+HoTlSqBDJTiCWSKTRmWGmUqfiH5Pa9Eku n576+6HK8ph8IB+V5EuaIl+hpKmlIina3qJXKR5GgCCWii4Gb2NkdAPiVCfRgXRFYx5y QF/vWdYBrTXAAAkhr9T3AwaGiKHbZb6TtmUDKE8TMQh1UndzrTAYYmcoZ2vGRjkK/1Mh rHfPiWVXk1IkgumCb7yaBLSfUza+KG1D4m59D/nwmTD2foWZY8A9jLBUA9/d485W7qVE 7f3Q== X-Gm-Message-State: AOJu0YztYa6mGO0uExyMXg+/XN63/q9EZKNJUXhGTryq9Nq6EPrjtCwP dxqfbYjmubpci5O/DKmeTRydH+BuYtgb0n+QyvRpJSTV4Tsw/p4FpGsEW7ZWRcXOaddQwEVboPR pBJLsF34wA0B9KdOZ0/896zwy3To7TLG4HFet X-Google-Smtp-Source: AGHT+IFiNb0gII9xlJrGDRXcA2JW5tXZJ5H5zdCdISF6vOZZl7rkbRXWVdFZCvKRB3/OFzNy1LpZIq/WvS4eFotWuHE= X-Received: by 2002:a17:906:3adb:b0:a2c:34e8:6429 with SMTP id z27-20020a1709063adb00b00a2c34e86429mr3144327ejd.69.1706003679963; Tue, 23 Jan 2024 01:54:39 -0800 (PST) MIME-Version: 1.0 References: <20240120024007.2850671-1-yosryahmed@google.com> <20240120024007.2850671-2-yosryahmed@google.com> <87wms0toh4.fsf@yhuang6-desk2.ccr.corp.intel.com> In-Reply-To: From: Yosry Ahmed Date: Tue, 23 Jan 2024 01:54:03 -0800 Message-ID: Subject: Re: [PATCH 1/2] mm: swap: update inuse_pages after all cleanups are done To: "Huang, Ying" Cc: Andrew Morton , Johannes Weiner , Nhat Pham , Chris Li , Chengming Zhou , linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 9B78E1C000F X-Stat-Signature: 6xmtbgt1bfjjpwjnnedrih4ysm41sr65 X-Rspam-User: X-HE-Tag: 1706003681-490814 X-HE-Meta: U2FsdGVkX1+lRpEdgZul/eUYiBXCDavLDhFzst7THSDTDMkBj763cTcqQqJ7A3ZQgfg9IN1oydJuSeB6TGQDoA3dwHpF1xCZtNmtwga3a9pIHrnGBww5zUYsG2etesXF0j2lpDgEkFDxXQwyavLCX7wDibooleN9HMd52+5YBqeXVBRHN9UBVBZdgdFK0ZF92BMVikpiDJr4834k/a4hxwAFjacxMPGqxbdQZ1eXO/wtlQQIjwJH1ByZqLxgCUGjFFNVjIPerQo5lHNzePohbWPYThmsKf7yxeSPDwlYiBWoJVK1ojRhsCumJ9jFf5rdPjcmQQJlNZbVcPe77wMbx5DvdBISarBj99NfhStt+MMsEbjSXoboq5fwxeZfqWpFC9DNpTh1Fa4AHsp/FHfC8hET1QTp7d84mSmsb1Nz41ElIHGGnWZXYW5XxrcL+/ogmYa+dXpArs0Aixx+lYesrIblXfEIyLoaR/EKE+DsJXCRAWnZC/ATWPw+z8vIvpDMdZVqqSzEEFh1/Ltl5vZoNCLqMjT+XYGCAWkV1h9291kYVPYmL/MYTFW3ofivFG9H/heYT+tMXqjK+cbKq9tBFIXR8VpHYL6ganQegrwJ6udGWgWVmq+Pgea31bblOP0PrbRx5z2Y3Xv6hpP8dyjyjMP6jL/lFtqehxDEjPtuketXy4mAmvAqu8BuS9hB0RpkGlzo7NmvnTjcw8fp4m5N2EOVa/ZWX8kdnNe0mXWwr1rmstvQQKaIomRS51tGdZcAaB/YZP/HUCaRK3LoUoFwdEXHPsU4EUJ+8SWYv2Ox1ZX+lImTANYQcnFV5UEjyl1Qx3DyaGpZJn9cibj0aPxF9Vi8qT1uNsetENnVHpU92a2gPAg9gZ/bOjOoKt/mSrmLxSAuyU1NVdiIQ8lFS7hbVx0fdVLtWYkNV/Y5AWIa9Drim6IscELNmJpbvdY3kbNXlmTbHsgU0Q1nr51lO54 F64iBO63 yujOORSKJtxnfKhZTRAaLyf+AOtrfMt2PNlCaZqu14XJ7xHSyzIg2pt/fLqX7HkY6RkzhMfLYcOn9w6olaus6GJQgb8fPa4SDz3jza+1C2nbrfEiCjGQuXz926YVGP3C4mWkgv8PRi/wn7rqoYu78unOIYi3IxWes7ibwXpxCrv0G1dHsPFhfcuJn2TvEM5DsaRejsmvV97O7k/TSF2jmvhXj8zMnlBhUh7EZAY+a3gsqKGsFk8FTMfiE6pZigzWQtHXipazoG4NO7mI= 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: > Alternatively, we may just hold the spinlock in try_to_unuse() when we > check si->inuse_pages at the end. This will also ensure that any calls > to swap_range_free() have completed. Let me know what you prefer. To elaborate, I mean replacing this patch and the memory barriers with the diff below. diff --git a/mm/swapfile.c b/mm/swapfile.c index 2fedb148b9404..9b932ecbd80a8 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -2046,6 +2046,7 @@ static int try_to_unuse(unsigned int type) struct swap_info_struct *si = swap_info[type]; struct folio *folio; swp_entry_t entry; + unsigned int inuse; unsigned int i; if (!READ_ONCE(si->inuse_pages)) @@ -2123,8 +2124,14 @@ static int try_to_unuse(unsigned int type) * and even shmem_writepage() could have been preempted after * folio_alloc_swap(), temporarily hiding that swap. It's easy * and robust (though cpu-intensive) just to keep retrying. + * + * Read si->inuse_pages with the lock held to make sure that cleanups in + * swap_range_free() are completed when we read si->inuse_pages == 0. */ - if (READ_ONCE(si->inuse_pages)) { + spin_lock(&si->lock); + inuse = si->inuse_pages; + spin_unlock(&si->lock); + if (inuse) { if (!signal_pending(current)) goto retry; return -EINTR;