Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp3818806pxb; Tue, 26 Jan 2021 05:44:18 -0800 (PST) X-Google-Smtp-Source: ABdhPJyIx2oLpZTNOvOn4rhAFzuNm2o5IHrBGAxENm70A9kHwCsEq+8ARTDIPoGYr6woLLj33rtp X-Received: by 2002:a17:907:3f29:: with SMTP id hq41mr3547711ejc.227.1611668658688; Tue, 26 Jan 2021 05:44:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1611668658; cv=none; d=google.com; s=arc-20160816; b=CA5ZRUc054tpbl+PjeO/ZMVg7MVola75piz0psCZc5SK20oMTCpZ5lzMhCn6FZeiUr oL6k1umHC/lQin4gj4Mo0qg26EchecamvmiQCbcEf3YahBNmImy53QckU6yBYyS8nYVR gqlclplPJ7OV+VzpC/sLDZB9VDo7hSfOktMmskde+QFLaOpBqIv5JwLeG901RoOymopu gyy7JqArhndcXEd47gFCcOsyd8jQSBAri1MNW3aRoR5QdnjWnwzUR9eQHoOeJhuM3a0w GE11Lk5FSyz2yJVmcNtnZ1wHhgMu+3MW+xIKszGQ34wwvHR22alfqtHYFNigCPqsPxoE jEpA== 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=6edlOIKMt/kFGwOL2ZvWghjXl8qV04H1Y/nYyZzU3Tg=; b=lloJCYsLkCqpvP4pROtCjYrYrKogmBHwjA+OZo93C6nQnb7zUiPgWSItr1jHvK7YF2 IZOlAvMK51HfgRqegdbyt9J3jcYlYYbvwqHChpdqA+HDFbylGbAjfLfatHf5kOtDcTWd oYex9HlI3GKrj1SRRwO7soklZlq3brNTmxdudj2ajsWkueBp3mYlYdQZQUCFSvoWE84/ bOPUi6lCJoYfKDzWYKh7/N9PDjF2+NVy/b6T8LMT4MIedNTcitz4yyOjbjAFEcymMehp iZGmMSP2BahHm6eSDQeC427nAh9h+l1R3h9bBmzVNaZQYem8QJiCbb6tTwkLCWfuEugj xsVw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=j2nWoYyV; 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 k13si7086846ejv.559.2021.01.26.05.43.53; Tue, 26 Jan 2021 05:44:18 -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=j2nWoYyV; 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 S2404797AbhAZNmF (ORCPT + 99 others); Tue, 26 Jan 2021 08:42:05 -0500 Received: from mail.kernel.org ([198.145.29.99]:45672 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2392686AbhAZNlr (ORCPT ); Tue, 26 Jan 2021 08:41:47 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id 85D7122B3B; Tue, 26 Jan 2021 13:41:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1611668467; bh=I/J1E95+y7XfRKunDTb5TO1y21yMpB/0pHrt99FpeOM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=j2nWoYyVrke+3PdywVnD3x7SIczXebDZaktsoTGGmvXM6qqxOQdNu+88dBA7Il2ED n074JLNaYC99L3EAfo6RtNh7KOTY+RCbiN1LEpwi23dDA2ClhLKli4JXdaZmrMnny1 swQCRAstD2hDNkGz/1asjqG7ENeZx9xBDymqMHeo8z3TdgNUNEBj5xCcLhdNOePqrl hc1v8Awto+7FrUvuZWZjAGOys8mkLE8DkJg6IK/bA+Z2Sz1wsoEfQKa0IKkh1ixw2U xf0Lr3+7xveekNz5F1ItGsKSUvzomLZ4Xrwd5acAhCgBzGR4NgjCAV+zbA/b7oaD4p g1/EMbIkJ/n2A== From: Jeff Layton To: ceph-devel@vger.kernel.org, idryomov@gmail.com, dhowells@redhat.com Cc: willy@infradead.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-cachefs@redhat.com Subject: [PATCH 2/6] ceph: rework PageFsCache handling Date: Tue, 26 Jan 2021 08:40:59 -0500 Message-Id: <20210126134103.240031-3-jlayton@kernel.org> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210126134103.240031-1-jlayton@kernel.org> References: <20210126134103.240031-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 | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c index 2b17bb36e548..fbfa49db06fd 100644 --- a/fs/ceph/addr.c +++ b/fs/ceph/addr.c @@ -146,6 +146,8 @@ static void ceph_invalidatepage(struct page *page, unsigned int offset, struct ceph_inode_info *ci; struct ceph_snap_context *snapc = page_snap_context(page); + wait_on_page_fscache(page); + inode = page->mapping->host; ci = ceph_inode(inode); @@ -168,11 +170,16 @@ static void ceph_invalidatepage(struct page *page, unsigned int offset, ClearPagePrivate(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