Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp1229654pxb; Fri, 22 Jan 2021 10:04:57 -0800 (PST) X-Google-Smtp-Source: ABdhPJywQEtD9d8gsZyCAWzkEfI7ISUTP47HohgXlnIXQwAb9SW/5jUTtw1VKUt35RVSxFk/a8SV X-Received: by 2002:a17:906:1c17:: with SMTP id k23mr3679854ejg.255.1611338696916; Fri, 22 Jan 2021 10:04:56 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1611338696; cv=none; d=google.com; s=arc-20160816; b=0ripMbuR+BeE2rBwenSgnplcTk6Pjhg6rVo3jlfo1Jcly4LLDKePOGyNoQwcL0afse lphha48grB3YLJsQyNk+4O3+cXhcVmNRDITGEnADqx77WRDOBKQROJYvjYZSgMSmeMzI hoQB4mGRT0V+7MTIN+dChJtx4NSnc5Ev/uRsxeA/Pm0xikGNpqQCXCh0S0zSozEYOuRr kHC1EypBw5zzJuUIUlEapObIhxcEV3aqCsmLn1A+b/OHruiFLS8YIWPfBZ4QO8DVBVhy Q/zhHIaTfUyG7J4QGr9ccAHABYlhmsK1o/GVc0SVgA0D68WR+H+qw84HpG2vOfrT7xz5 2f9A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=r1OLF3WWr9JyzZ6OA56H8jfY+7eap4wFBhSyTL6Wpag=; b=Pua33sR+RZLaLzhad9Iy8Wr2FpgBHufaIY2+3uqqcu4PIpKBzZoPLHVFmF2U8SFH0h iG6JdzNWadjBzt1Wtp5x596+9hSUNr5+a3NhgSC2dVUoX9zlei61FibEZ/kPQfa5MWBo kkOvX3RcziuTY+VLkqTapO/q4C2/62AK1+R9RbEa6s328b6gUXzkspYz9flQQE2Ft7xJ Mk5hVQMaYKYFTKG06VpbkoNgmAqcfQLZrQTve/lKe0aFGZBeoDO+dUD0di/hnhCqJo+G rhZSP08foXgVPsCpKF4s2VlfJWJx0Y7KFShbv4D1imSu1LeAGnTEWQuu1ojrqCGH0nss q3dw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=cgeYi17B; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f17si3745676edv.498.2021.01.22.10.04.22; Fri, 22 Jan 2021 10:04:56 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=cgeYi17B; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730019AbhAVSDP (ORCPT + 99 others); Fri, 22 Jan 2021 13:03:15 -0500 Received: from mail.kernel.org ([198.145.29.99]:53842 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729466AbhAVRwD (ORCPT ); Fri, 22 Jan 2021 12:52:03 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id 7486723A9C; Fri, 22 Jan 2021 17:51:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1611337883; bh=x1lJQGM04EP7vdDpOg3XZRh7p/S7qixcDsgKzeM7VHE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=cgeYi17BYaz72pJfJRzXo5B8FqtZCB7ZgIWCKtkxGYlhLd4ecVOMeSpzWpQov/w7Q 2g5dp/aQ1Q3YXFu0mRH6SaSqo5/hVN5LY21FCbTJbT7lWWPco8GRYp2dYAtqiNMgS5 r3vP4aivhAT59DjBigNLlSPz9DYrhe+szb8xHs83tKQ6/cboaeNPChs3LuVf4WrE0K oTe9+2nW97R614lf9C71NBjcori4PijInVwyXZd4sYKUXyTWtLs2b16dQgAW22u7Om 2XZfA0OTD2XTqyd1515vuUxGX4KiXwMyHrLpbiF9QoSyDTw6rSwTQX5PLu44Y8PtXe xvIWzKp3r95OQ== From: Jeff Layton To: ceph-devel@vger.kernel.org Cc: linux-fsdevel@vger.kernel.org, dhowells@redhat.com, willy@infradead.org, linux-cachefs@redhat.com, linux-kernel@vger.kernel.org Subject: [RFC PATCH 2/6] ceph: rework PageFsCache handling Date: Fri, 22 Jan 2021 12:51:14 -0500 Message-Id: <20210122175119.364381-3-jlayton@kernel.org> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210122175119.364381-1-jlayton@kernel.org> References: <20210122175119.364381-1-jlayton@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org With the new fscache API, the PageFsCache bit now indicates that the page is being written to the cache and shouldn't be modified or released until it's finished. Change releasepage and invalidatepage to wait on that bit before returning. Signed-off-by: Jeff Layton --- fs/ceph/addr.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c index e267aa60c8b6..f554667e1e91 100644 --- a/fs/ceph/addr.c +++ b/fs/ceph/addr.c @@ -166,13 +166,19 @@ static void ceph_invalidatepage(struct page *page, unsigned int offset, ceph_put_snap_context(snapc); page->private = 0; ClearPagePrivate(page); + wait_on_page_fscache(page); } -static int ceph_releasepage(struct page *page, gfp_t g) +static int ceph_releasepage(struct page *page, gfp_t gfp_flags) { dout("%p releasepage %p idx %lu (%sdirty)\n", page->mapping->host, page, page->index, PageDirty(page) ? "" : "not "); + if (PageFsCache(page)) { + if (!(gfp_flags & __GFP_DIRECT_RECLAIM) || !(gfp_flags & __GFP_FS)) + return 0; + wait_on_page_fscache(page); + } return !PagePrivate(page); } -- 2.29.2