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 X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 14AA2C433E1 for ; Wed, 1 Jul 2020 16:14:41 +0000 (UTC) Received: from lists.sourceforge.net (lists.sourceforge.net [216.105.38.7]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D91F2207FB; Wed, 1 Jul 2020 16:14:40 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=sourceforge.net header.i=@sourceforge.net header.b="J//Adgll"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=sf.net header.i=@sf.net header.b="FSsQXg4r"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="QRgPYJk/" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D91F2207FB Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=linux-f2fs-devel-bounces@lists.sourceforge.net Received: from [127.0.0.1] (helo=sfs-ml-4.v29.lw.sourceforge.com) by sfs-ml-4.v29.lw.sourceforge.com with esmtp (Exim 4.90_1) (envelope-from ) id 1jqfNe-000489-TO; Wed, 01 Jul 2020 16:14:38 +0000 Received: from [172.30.20.202] (helo=mx.sourceforge.net) by sfs-ml-4.v29.lw.sourceforge.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jqfNd-00047k-7L for linux-f2fs-devel@lists.sourceforge.net; Wed, 01 Jul 2020 16:14:37 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sourceforge.net; s=x; h=In-Reply-To:Content-Transfer-Encoding:Content-Type: MIME-Version:References:Message-ID:Subject:To:From:Date:Sender:Reply-To:Cc: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=tX5DuodYHSWFkAywxYYltqtctPYXgv+2Jf9xFYjwEso=; b=J//AdgllBwszt3x81tG75mJdr9 XjIXGEnkb/WX4y/YLuQ6Bo5XqVlGk+YcGr970VoSrGg3Rc+Up4PQcPQiir+7dOVxyH7VIXCfyFgoK jnB3gSjtMQeCFvP3pX9y8GmdgfCtTm5U7WyhFu3yvYU50og6fXpYIVp7LJnPRMLRZG7g=; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x ; h=In-Reply-To:Content-Transfer-Encoding:Content-Type:MIME-Version: References:Message-ID:Subject:To:From:Date:Sender:Reply-To:Cc:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=tX5DuodYHSWFkAywxYYltqtctPYXgv+2Jf9xFYjwEso=; b=FSsQXg4rTiLVKGi8F8TU6VLPM1 /XbDj2OyAS3h+fY3OIUoDhGsdeg7ntnhpjBh5YSK3fxbBeD/q6C1unbIilyFVgltzxvKHE06e11i9 wDFL/aEJEm+3yJ0my020Q9d8ES37/QW5eTfj9hgOcpujFN0Aablcka4Iup0MRvI2XM7Y=; Received: from mail.kernel.org ([198.145.29.99]) by sfi-mx-3.v28.lw.sourceforge.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.92.2) id 1jqfNb-004BR7-SU for linux-f2fs-devel@lists.sourceforge.net; Wed, 01 Jul 2020 16:14:37 +0000 Received: from localhost (unknown [104.132.1.66]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 8A38B207FB; Wed, 1 Jul 2020 16:14:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1593620069; bh=2TWjWcBOdWkh1PkJpBcH2H9+m+ze9nMuqw5lH2ZVuK0=; h=Date:From:To:Subject:References:In-Reply-To:From; b=QRgPYJk/XijGeI9UguT9sCw0ics6U013OjmRO2k7KAAVGO/fivH+8vmNXjqJy2BDv /zc4dJXjwwDyA2rV2IVEGXmtExOT4Z2MYzyYidq7VOcmsP3Y6tzE2W1rfWdiUx9XPf 2agg5PLwN0DXvHj0L69G3o+KUVh0e0Z5qZtrDL9k= Date: Wed, 1 Jul 2020 09:14:29 -0700 From: Jaegeuk Kim To: linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, kernel-team@android.com Message-ID: <20200701161429.GA1724572@google.com> References: <20200624012148.180050-1-jaegeuk@kernel.org> <20200629150323.GA3293033@google.com> <20200629202720.GA230664@google.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20200629202720.GA230664@google.com> X-Headers-End: 1jqfNb-004BR7-SU Subject: Re: [f2fs-dev] [PATCH v4] f2fs: avoid readahead race condition X-BeenThere: linux-f2fs-devel@lists.sourceforge.net X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net CkZyb20gMzYzNDg2NDA5NWJkMWFhZmJiNjBmZjQ5ZGFjN2QxM2NlMTU3YjY1OCBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogSmFlZ2V1ayBLaW0gPGphZWdldWtAa2VybmVsLm9yZz4KRGF0 ZTogTW9uLCAyMiBKdW4gMjAyMCAyMzowMTowNSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIGYyZnM6 IGF2b2lkIHJlYWRhaGVhZCByYWNlIGNvbmRpdGlvbgpNSU1FLVZlcnNpb246IDEuMApDb250ZW50 LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGlu ZzogOGJpdAoKSWYgdHdvIHJlYWRhaGVhZCB0aHJlYWRzIGhhdmluZyBzYW1lIG9mZnNldCBlbnRl ciBpbiByZWFkcGFnZXMsIGV2ZXJ5IHJlYWQKSU9zIGFyZSBzcGxpdCBhbmQgaXNzdWVkIHRvIHRo ZSBkaXNrIHdoaWNoIGdpdmluZyBsb3dlciBiYW5kd2lkdGguCgpUaGlzIHBhdGNoIHRyaWVzIHRv IGF2b2lkIHJlZHVuZGFudCByZWFkYWhlYWQgY2FsbHMuCgpGaXhlcyBvbmUgYnVpbGQgZXJyb3Ig cmVwb3J0ZWQgYnkgUmFuZHkuCkZpeCBidWlsZCBlcnJvciB3aGVuIEYyRlNfRlNfQ09NUFJFU1NJ T04gaXMgbm90IHNldC9lbmFibGVkLgpUaGlzIGxhYmVsIGlzIG5lZWRlZCBpbiBlaXRoZXIgY2Fz ZS4KCi4uL2ZzL2YyZnMvZGF0YS5jOiBJbiBmdW5jdGlvbiDigJhmMmZzX21wYWdlX3JlYWRwYWdl c+KAmToKLi4vZnMvZjJmcy9kYXRhLmM6MjMyNzo1OiBlcnJvcjogbGFiZWwg4oCYbmV4dF9wYWdl 4oCZIHVzZWQgYnV0IG5vdCBkZWZpbmVkCiAgICAgZ290byBuZXh0X3BhZ2U7CgpSZXZpZXdlZC1i eTogQ2hhbyBZdSA8eXVjaGFvMEBodWF3ZWkuY29tPgpTaWduZWQtb2ZmLWJ5OiBKYWVnZXVrIEtp bSA8amFlZ2V1a0BrZXJuZWwub3JnPgotLS0KIHY0OgogIC0gZml4IG1pc3NpbmcgdW5sb2NrX3Bh Z2UKIHYzOgogIC0gdXNlIFJFQUR8V1JJVEVfT05DRQogdjI6CiAgIC0gYWRkIG1pc3NpbmcgY29k ZSB0byBieXBhc3MgcmVhZAoKIGZzL2YyZnMvZGF0YS5jICB8IDIwICsrKysrKysrKysrKysrKysr KysrCiBmcy9mMmZzL2YyZnMuaCAgfCAgMSArCiBmcy9mMmZzL3N1cGVyLmMgfCAgMiArKwogMyBm aWxlcyBjaGFuZ2VkLCAyMyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZnMvZjJmcy9kYXRh LmMgYi9mcy9mMmZzL2RhdGEuYwppbmRleCA5OTVjZjc4YjIzYzVlLi4wNjZkMjk5MzhjMDNhIDEw MDY0NAotLS0gYS9mcy9mMmZzL2RhdGEuYworKysgYi9mcy9mMmZzL2RhdGEuYwpAQCAtMjI5Niw2 ICsyMjk2LDcgQEAgc3RhdGljIGludCBmMmZzX21wYWdlX3JlYWRwYWdlcyhzdHJ1Y3QgaW5vZGUg Kmlub2RlLAogCXVuc2lnbmVkIG5yX3BhZ2VzID0gcmFjID8gcmVhZGFoZWFkX2NvdW50KHJhYykg OiAxOwogCXVuc2lnbmVkIG1heF9ucl9wYWdlcyA9IG5yX3BhZ2VzOwogCWludCByZXQgPSAwOwor CWJvb2wgZHJvcF9yYSA9IGZhbHNlOwogCiAJbWFwLm1fcGJsayA9IDA7CiAJbWFwLm1fbGJsayA9 IDA7CkBAIC0yMzA2LDEwICsyMzA3LDI2IEBAIHN0YXRpYyBpbnQgZjJmc19tcGFnZV9yZWFkcGFn ZXMoc3RydWN0IGlub2RlICppbm9kZSwKIAltYXAubV9zZWdfdHlwZSA9IE5PX0NIRUNLX1RZUEU7 CiAJbWFwLm1fbWF5X2NyZWF0ZSA9IGZhbHNlOwogCisJLyoKKwkgKiBUd28gcmVhZGFoZWFkIHRo cmVhZHMgZm9yIHNhbWUgYWRkcmVzcyByYW5nZSBjYW4gY2F1c2UgcmFjZSBjb25kaXRpb24KKwkg KiB3aGljaCBmcmFnbWVudHMgc2VxdWVudGlhbCByZWFkIElPcy4gU28gbGV0J3MgYXZvaWQgZWFj aCBvdGhlci4KKwkgKi8KKwlpZiAocmFjICYmIHJlYWRhaGVhZF9jb3VudChyYWMpKSB7CisJCWlm IChSRUFEX09OQ0UoRjJGU19JKGlub2RlKS0+cmFfb2Zmc2V0KSA9PSByZWFkYWhlYWRfaW5kZXgo cmFjKSkKKwkJCWRyb3BfcmEgPSB0cnVlOworCQllbHNlCisJCQlXUklURV9PTkNFKEYyRlNfSShp bm9kZSktPnJhX29mZnNldCwKKwkJCQkJCXJlYWRhaGVhZF9pbmRleChyYWMpKTsKKwl9CisKIAlm b3IgKDsgbnJfcGFnZXM7IG5yX3BhZ2VzLS0pIHsKIAkJaWYgKHJhYykgewogCQkJcGFnZSA9IHJl YWRhaGVhZF9wYWdlKHJhYyk7CiAJCQlwcmVmZXRjaHcoJnBhZ2UtPmZsYWdzKTsKKwkJCWlmIChk cm9wX3JhKSB7CisJCQkJZjJmc19wdXRfcGFnZShwYWdlLCAxKTsKKwkJCQljb250aW51ZTsKKwkJ CX0KIAkJfQogCiAjaWZkZWYgQ09ORklHX0YyRlNfRlNfQ09NUFJFU1NJT04KQEAgLTIzNzIsNiAr MjM4OSw5IEBAIHN0YXRpYyBpbnQgZjJmc19tcGFnZV9yZWFkcGFnZXMoc3RydWN0IGlub2RlICpp bm9kZSwKIAl9CiAJaWYgKGJpbykKIAkJX19zdWJtaXRfYmlvKEYyRlNfSV9TQihpbm9kZSksIGJp bywgREFUQSk7CisKKwlpZiAocmFjICYmIHJlYWRhaGVhZF9jb3VudChyYWMpICYmICFkcm9wX3Jh KQorCQlXUklURV9PTkNFKEYyRlNfSShpbm9kZSktPnJhX29mZnNldCwgLTEpOwogCXJldHVybiBy ZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL2ZzL2YyZnMvZjJmcy5oIGIvZnMvZjJmcy9mMmZzLmgKaW5k ZXggNmE2NTVlZGViNTIyZi4uZTZlNDc2MThhMzU3NiAxMDA2NDQKLS0tIGEvZnMvZjJmcy9mMmZz LmgKKysrIGIvZnMvZjJmcy9mMmZzLmgKQEAgLTgwOSw2ICs4MDksNyBAQCBzdHJ1Y3QgZjJmc19p bm9kZV9pbmZvIHsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGlubWVtX3BhZ2VzOwkvKiBpbm1lbW9yeSBw YWdlcyBtYW5hZ2VkIGJ5IGYyZnMgKi8KIAlzdHJ1Y3QgdGFza19zdHJ1Y3QgKmlubWVtX3Rhc2s7 CS8qIHN0b3JlIGlubWVtb3J5IHRhc2sgKi8KIAlzdHJ1Y3QgbXV0ZXggaW5tZW1fbG9jazsJLyog bG9jayBmb3IgaW5tZW1vcnkgcGFnZXMgKi8KKwlwZ29mZl90IHJhX29mZnNldDsJCS8qIG9uZ29p bmcgcmVhZGFoZWFkIG9mZnNldCAqLwogCXN0cnVjdCBleHRlbnRfdHJlZSAqZXh0ZW50X3RyZWU7 CS8qIGNhY2hlZCBleHRlbnRfdHJlZSBlbnRyeSAqLwogCiAJLyogYXZvaWQgcmFjaW5nIGJldHdl ZW4gZm9yZWdyb3VuZCBvcCBhbmQgZ2MgKi8KZGlmZiAtLWdpdCBhL2ZzL2YyZnMvc3VwZXIuYyBi L2ZzL2YyZnMvc3VwZXIuYwppbmRleCA3MzI2NTIyMDU3Mzc4Li44MGNiN2NkMzU4Zjg0IDEwMDY0 NAotLS0gYS9mcy9mMmZzL3N1cGVyLmMKKysrIGIvZnMvZjJmcy9zdXBlci5jCkBAIC0xMDE1LDYg KzEwMTUsOCBAQCBzdGF0aWMgc3RydWN0IGlub2RlICpmMmZzX2FsbG9jX2lub2RlKHN0cnVjdCBz dXBlcl9ibG9jayAqc2IpCiAJLyogV2lsbCBiZSB1c2VkIGJ5IGRpcmVjdG9yeSBvbmx5ICovCiAJ ZmktPmlfZGlyX2xldmVsID0gRjJGU19TQihzYiktPmRpcl9sZXZlbDsKIAorCWZpLT5yYV9vZmZz ZXQgPSAtMTsKKwogCXJldHVybiAmZmktPnZmc19pbm9kZTsKIH0KIAotLSAKMi4yNy4wLjIxMi5n ZThiYTFjYzk4OC1nb29nCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KTGludXgtZjJmcy1kZXZlbCBtYWlsaW5nIGxpc3QKTGludXgtZjJmcy1kZXZlbEBs aXN0cy5zb3VyY2Vmb3JnZS5uZXQKaHR0cHM6Ly9saXN0cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMv bGlzdGluZm8vbGludXgtZjJmcy1kZXZlbAo= 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 X-Spam-Level: X-Spam-Status: No, score=-7.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 16612C433DF for ; Wed, 1 Jul 2020 16:14:35 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E8A5C20809 for ; Wed, 1 Jul 2020 16:14:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1593620074; bh=2TWjWcBOdWkh1PkJpBcH2H9+m+ze9nMuqw5lH2ZVuK0=; h=Date:From:To:Subject:References:In-Reply-To:List-ID:From; b=vckjKXjVQ4/c6P12ipvhb2p7IoKQ3k1qJ79cYSRFQlPeHkhN8a8p7BTH0oBjVEkYp Q4XCyt1ucg/HNR5jlRHOwFlgIdGUat3MyJnL+3XdoI/+oy5M/QGBFijkKV/bgISATd 8yAhwcvIu5+nqTZZQ6++Yw0PaDNbgHm+ZIyct1f0= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732278AbgGAQOd (ORCPT ); Wed, 1 Jul 2020 12:14:33 -0400 Received: from mail.kernel.org ([198.145.29.99]:44260 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730645AbgGAQOa (ORCPT ); Wed, 1 Jul 2020 12:14:30 -0400 Received: from localhost (unknown [104.132.1.66]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 8A38B207FB; Wed, 1 Jul 2020 16:14:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1593620069; bh=2TWjWcBOdWkh1PkJpBcH2H9+m+ze9nMuqw5lH2ZVuK0=; h=Date:From:To:Subject:References:In-Reply-To:From; b=QRgPYJk/XijGeI9UguT9sCw0ics6U013OjmRO2k7KAAVGO/fivH+8vmNXjqJy2BDv /zc4dJXjwwDyA2rV2IVEGXmtExOT4Z2MYzyYidq7VOcmsP3Y6tzE2W1rfWdiUx9XPf 2agg5PLwN0DXvHj0L69G3o+KUVh0e0Z5qZtrDL9k= Date: Wed, 1 Jul 2020 09:14:29 -0700 From: Jaegeuk Kim To: linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, kernel-team@android.com Subject: Re: [f2fs-dev] [PATCH v4] f2fs: avoid readahead race condition Message-ID: <20200701161429.GA1724572@google.com> References: <20200624012148.180050-1-jaegeuk@kernel.org> <20200629150323.GA3293033@google.com> <20200629202720.GA230664@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20200629202720.GA230664@google.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org >From 3634864095bd1aafbb60ff49dac7d13ce157b658 Mon Sep 17 00:00:00 2001 From: Jaegeuk Kim Date: Mon, 22 Jun 2020 23:01:05 -0700 Subject: [PATCH] f2fs: avoid readahead race condition MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If two readahead threads having same offset enter in readpages, every read IOs are split and issued to the disk which giving lower bandwidth. This patch tries to avoid redundant readahead calls. Fixes one build error reported by Randy. Fix build error when F2FS_FS_COMPRESSION is not set/enabled. This label is needed in either case. ../fs/f2fs/data.c: In function ‘f2fs_mpage_readpages’: ../fs/f2fs/data.c:2327:5: error: label ‘next_page’ used but not defined goto next_page; Reviewed-by: Chao Yu Signed-off-by: Jaegeuk Kim --- v4: - fix missing unlock_page v3: - use READ|WRITE_ONCE v2: - add missing code to bypass read fs/f2fs/data.c | 20 ++++++++++++++++++++ fs/f2fs/f2fs.h | 1 + fs/f2fs/super.c | 2 ++ 3 files changed, 23 insertions(+) diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c index 995cf78b23c5e..066d29938c03a 100644 --- a/fs/f2fs/data.c +++ b/fs/f2fs/data.c @@ -2296,6 +2296,7 @@ static int f2fs_mpage_readpages(struct inode *inode, unsigned nr_pages = rac ? readahead_count(rac) : 1; unsigned max_nr_pages = nr_pages; int ret = 0; + bool drop_ra = false; map.m_pblk = 0; map.m_lblk = 0; @@ -2306,10 +2307,26 @@ static int f2fs_mpage_readpages(struct inode *inode, map.m_seg_type = NO_CHECK_TYPE; map.m_may_create = false; + /* + * Two readahead threads for same address range can cause race condition + * which fragments sequential read IOs. So let's avoid each other. + */ + if (rac && readahead_count(rac)) { + if (READ_ONCE(F2FS_I(inode)->ra_offset) == readahead_index(rac)) + drop_ra = true; + else + WRITE_ONCE(F2FS_I(inode)->ra_offset, + readahead_index(rac)); + } + for (; nr_pages; nr_pages--) { if (rac) { page = readahead_page(rac); prefetchw(&page->flags); + if (drop_ra) { + f2fs_put_page(page, 1); + continue; + } } #ifdef CONFIG_F2FS_FS_COMPRESSION @@ -2372,6 +2389,9 @@ static int f2fs_mpage_readpages(struct inode *inode, } if (bio) __submit_bio(F2FS_I_SB(inode), bio, DATA); + + if (rac && readahead_count(rac) && !drop_ra) + WRITE_ONCE(F2FS_I(inode)->ra_offset, -1); return ret; } diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h index 6a655edeb522f..e6e47618a3576 100644 --- a/fs/f2fs/f2fs.h +++ b/fs/f2fs/f2fs.h @@ -809,6 +809,7 @@ struct f2fs_inode_info { struct list_head inmem_pages; /* inmemory pages managed by f2fs */ struct task_struct *inmem_task; /* store inmemory task */ struct mutex inmem_lock; /* lock for inmemory pages */ + pgoff_t ra_offset; /* ongoing readahead offset */ struct extent_tree *extent_tree; /* cached extent_tree entry */ /* avoid racing between foreground op and gc */ diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c index 7326522057378..80cb7cd358f84 100644 --- a/fs/f2fs/super.c +++ b/fs/f2fs/super.c @@ -1015,6 +1015,8 @@ static struct inode *f2fs_alloc_inode(struct super_block *sb) /* Will be used by directory only */ fi->i_dir_level = F2FS_SB(sb)->dir_level; + fi->ra_offset = -1; + return &fi->vfs_inode; } -- 2.27.0.212.ge8ba1cc988-goog