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=-9.8 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT 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 93A07C2BA83 for ; Fri, 14 Feb 2020 16:02:13 +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 62947217F4; Fri, 14 Feb 2020 16:02:13 +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="Hq0cFwGj"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=sf.net header.i=@sf.net header.b="iAV3kUUw"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="MjAdtUHB" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 62947217F4 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-2.v29.lw.sourceforge.com) by sfs-ml-2.v29.lw.sourceforge.com with esmtp (Exim 4.90_1) (envelope-from ) id 1j2dPx-0001vD-1u; Fri, 14 Feb 2020 16:02:13 +0000 Received: from [172.30.20.202] (helo=mx.sourceforge.net) by sfs-ml-2.v29.lw.sourceforge.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.90_1) (envelope-from ) id 1j2dPv-0001v2-TG for linux-f2fs-devel@lists.sourceforge.net; Fri, 14 Feb 2020 16:02:11 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sourceforge.net; s=x; h=Content-Transfer-Encoding:Content-Type:MIME-Version :References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: 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=FY7njMRt7XNErB+oiUofh4ot+U0rusCgMATf+TnHd0w=; b=Hq0cFwGjOy7y4EVlcRUa0D82pu UfEhAsYwVd22MWtbwd8yfE/AV1cLwmgv573PZZAfC+dfuExK0TfuKW0ndRnRtS3lhxXA2RLSQkjvh fLLXLRXODqZXjGGfAw5bIT+zS0ZbyXIpM3lY5m+QdZazciUH9ZbZNnQs7b3uWLD5Xd0k=; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x ; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References: In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: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=FY7njMRt7XNErB+oiUofh4ot+U0rusCgMATf+TnHd0w=; b=iAV3kUUwWXFIn734+v+edDJ86h ex6YUzwt/1/oQxv9gYj+q6AkTKDHEbnm07po8j3mq+nOYpIeHA+BFiVLHPGGfTf63LHFY5J5VzbJt C8fLnWMrfQeJyN9FSi3ks4vGrMssphNDYEpPFZjTRTY0y5K3jx+t5lCoV64bk1io6jnI=; Received: from mail.kernel.org ([198.145.29.99]) by sfi-mx-4.v28.lw.sourceforge.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.92.2) id 1j2dPu-003v8E-E2 for linux-f2fs-devel@lists.sourceforge.net; Fri, 14 Feb 2020 16:02:11 +0000 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id B33C5217F4; Fri, 14 Feb 2020 16:02:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1581696124; bh=tNTO4ct9SDI8I9KV6SDwnENGAUGgcphrJePh9bylMEQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MjAdtUHBvNiO34SQPzA/6dBz7Cw7g3zOREQR2moJi0WGRCTMNrpmrjKZii+xMdlbY an+J8piknv5YE/erYGDTbtBmJOlfP/ZSVpDP7k4FknriQF9KyD+7t68kwpaVl/wZlU WdIwmLaur1KRhk/5Fj5HjHz2jn7zuyzT3+ya38Pc= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Date: Fri, 14 Feb 2020 10:54:21 -0500 Message-Id: <20200214160149.11681-11-sashal@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200214160149.11681-1-sashal@kernel.org> References: <20200214160149.11681-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-Headers-End: 1j2dPu-003v8E-E2 Subject: [f2fs-dev] [PATCH AUTOSEL 5.4 011/459] f2fs: preallocate DIO blocks when forcing buffered_io 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: , Cc: Sasha Levin , Javier Gonzalez , Damien Le Moal , linux-f2fs-devel@lists.sourceforge.net, Jaegeuk Kim Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net RnJvbTogSmFlZ2V1ayBLaW0gPGphZWdldWtAa2VybmVsLm9yZz4KClsgVXBzdHJlYW0gY29tbWl0 IDQ3NTAxZjg3YzYxYWQyYWEyMzRhZGQ2M2UxYWUyMzE1MjFkYmMzZjUgXQoKVGhlIHByZXZpb3Vz IHByZWFsbG9jYXRpb24gYW5kIERJTyBkZWNpc2lvbiBsaWtlIGJlbG93LgoKICAgICAgICAgICAg ICAgICAgICAgICAgIGFsbG93X291dHBsYWNlX2RpbyAgICAgICAgICAgICAgIWFsbG93X291dHBs YWNlX2RpbwpmMmZzX2ZvcmNlX2J1ZmZlcmVkX2lvICAgKCopIE5vX1ByZWFsbG9jIC8gQnVmZmVy ZWRfSU8gICBQcmVhbGxvYyAvIEJ1ZmZlcmVkX0lPCiFmMmZzX2ZvcmNlX2J1ZmZlcmVkX2lvICBO b19QcmVhbGxvYyAvIERJTyAgICAgICAgICAgICAgIFByZWFsbG9jIC8gRElPCgpCdXQsIEphdmll ciByZXBvcnRlZCBDYXNlICgqKSB3aGVyZSB6b25lZCBkZXZpY2UgYnlwYXNzZWQgcHJlYWxsb2Nh dGlvbiBidXQKZmVsbCBiYWNrIHRvIGJ1ZmZlcmVkIHdyaXRlcyBpbiBmMmZzX2RpcmVjdF9JTygp LCByZXN1bHRpbmcgaW4gc3RhbGUgZGF0YQpiZWluZyByZWFkLgoKSW4gb3JkZXIgdG8gZml4IHRo ZSBpc3N1ZSwgYWN0dWFsbHkgd2UgbmVlZCB0byBwcmVhbGxvY2F0ZSBibG9ja3Mgd2hlbmV2ZXIK d2UgZmFsbCBiYWNrIHRvIGJ1ZmZlcmVkIElPIGxpa2UgdGhpcy4gTm8gY2hhbmdlIGlzIG1hZGUg aW4gdGhlIG90aGVyIGNhc2VzLgoKICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93X291dHBs YWNlX2RpbyAgICAgICAgICAgICAgIWFsbG93X291dHBsYWNlX2RpbwpmMmZzX2ZvcmNlX2J1ZmZl cmVkX2lvICAgKCopIFByZWFsbG9jIC8gQnVmZmVyZWRfSU8gICAgICBQcmVhbGxvYyAvIEJ1ZmZl cmVkX0lPCiFmMmZzX2ZvcmNlX2J1ZmZlcmVkX2lvICBOb19QcmVhbGxvYyAvIERJTyAgICAgICAg ICAgICAgIFByZWFsbG9jIC8gRElPCgpSZXBvcnRlZC1hbmQtdGVzdGVkLWJ5OiBKYXZpZXIgR29u emFsZXogPGphdmllckBqYXZpZ29uLmNvbT4KU2lnbmVkLW9mZi1ieTogRGFtaWVuIExlIE1vYWwg PGRhbWllbi5sZW1vYWxAd2RjLmNvbT4KVGVzdGVkLWJ5OiBTaGluJ2ljaGlybyBLYXdhc2FraSA8 c2hpbmljaGlyby5rYXdhc2FraUB3ZGMuY29tPgpSZXZpZXdlZC1ieTogQ2hhbyBZdSA8eXVjaGFv MEBodWF3ZWkuY29tPgpSZXZpZXdlZC1ieTogSmF2aWVyIEdvbnrDoWxleiA8amF2aWVyQGphdmln b24uY29tPgpTaWduZWQtb2ZmLWJ5OiBKYWVnZXVrIEtpbSA8amFlZ2V1a0BrZXJuZWwub3JnPgpT aWduZWQtb2ZmLWJ5OiBTYXNoYSBMZXZpbiA8c2FzaGFsQGtlcm5lbC5vcmc+Ci0tLQogZnMvZjJm cy9kYXRhLmMgfCAxMyAtLS0tLS0tLS0tLS0tCiBmcy9mMmZzL2ZpbGUuYyB8IDQzICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMzMg aW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZnMvZjJmcy9kYXRh LmMgYi9mcy9mMmZzL2RhdGEuYwppbmRleCAyZTljNzMxNjU4MDA4Li41ZDZmZDk0MGFhYjJlIDEw MDY0NAotLS0gYS9mcy9mMmZzL2RhdGEuYworKysgYi9mcy9mMmZzL2RhdGEuYwpAQCAtMTA3NCwx OSArMTA3NCw2IEBAIGludCBmMmZzX3ByZWFsbG9jYXRlX2Jsb2NrcyhzdHJ1Y3Qga2lvY2IgKmlv Y2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSkKIAlpbnQgZXJyID0gMDsKIAlib29sIGRpcmVjdF9p byA9IGlvY2ItPmtpX2ZsYWdzICYgSU9DQl9ESVJFQ1Q7CiAKLQkvKiBjb252ZXJ0IGlubGluZSBk YXRhIGZvciBEaXJlY3QgSS9PKi8KLQlpZiAoZGlyZWN0X2lvKSB7Ci0JCWVyciA9IGYyZnNfY29u dmVydF9pbmxpbmVfaW5vZGUoaW5vZGUpOwotCQlpZiAoZXJyKQotCQkJcmV0dXJuIGVycjsKLQl9 Ci0KLQlpZiAoZGlyZWN0X2lvICYmIGFsbG93X291dHBsYWNlX2Rpbyhpbm9kZSwgaW9jYiwgZnJv bSkpCi0JCXJldHVybiAwOwotCi0JaWYgKGlzX2lub2RlX2ZsYWdfc2V0KGlub2RlLCBGSV9OT19Q UkVBTExPQykpCi0JCXJldHVybiAwOwotCiAJbWFwLm1fbGJsayA9IEYyRlNfQkxLX0FMSUdOKGlv Y2ItPmtpX3Bvcyk7CiAJbWFwLm1fbGVuID0gRjJGU19CWVRFU19UT19CTEsoaW9jYi0+a2lfcG9z ICsgaW92X2l0ZXJfY291bnQoZnJvbSkpOwogCWlmIChtYXAubV9sZW4gPiBtYXAubV9sYmxrKQpk aWZmIC0tZ2l0IGEvZnMvZjJmcy9maWxlLmMgYi9mcy9mMmZzL2ZpbGUuYwppbmRleCA3MmYzMDg3 OTBhOGU1Li40NGJjNWY0YTljZTE5IDEwMDY0NAotLS0gYS9mcy9mMmZzL2ZpbGUuYworKysgYi9m cy9mMmZzL2ZpbGUuYwpAQCAtMzM0OCwxOCArMzM0OCw0MSBAQCBzdGF0aWMgc3NpemVfdCBmMmZz X2ZpbGVfd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJv bSkKIAkJCQlyZXQgPSAtRUFHQUlOOwogCQkJCWdvdG8gb3V0OwogCQkJfQotCQl9IGVsc2Ugewot CQkJcHJlYWxsb2NhdGVkID0gdHJ1ZTsKLQkJCXRhcmdldF9zaXplID0gaW9jYi0+a2lfcG9zICsg aW92X2l0ZXJfY291bnQoZnJvbSk7CisJCQlnb3RvIHdyaXRlOworCQl9CiAKLQkJCWVyciA9IGYy ZnNfcHJlYWxsb2NhdGVfYmxvY2tzKGlvY2IsIGZyb20pOwotCQkJaWYgKGVycikgewotCQkJCWNs ZWFyX2lub2RlX2ZsYWcoaW5vZGUsIEZJX05PX1BSRUFMTE9DKTsKLQkJCQlpbm9kZV91bmxvY2so aW5vZGUpOwotCQkJCXJldCA9IGVycjsKLQkJCQlnb3RvIG91dDsKLQkJCX0KKwkJaWYgKGlzX2lu b2RlX2ZsYWdfc2V0KGlub2RlLCBGSV9OT19QUkVBTExPQykpCisJCQlnb3RvIHdyaXRlOworCisJ CWlmIChpb2NiLT5raV9mbGFncyAmIElPQ0JfRElSRUNUKSB7CisJCQkvKgorCQkJICogQ29udmVy dCBpbmxpbmUgZGF0YSBmb3IgRGlyZWN0IEkvTyBiZWZvcmUgZW50ZXJpbmcKKwkJCSAqIGYyZnNf ZGlyZWN0X0lPKCkuCisJCQkgKi8KKwkJCWVyciA9IGYyZnNfY29udmVydF9pbmxpbmVfaW5vZGUo aW5vZGUpOworCQkJaWYgKGVycikKKwkJCQlnb3RvIG91dF9lcnI7CisJCQkvKgorCQkJICogSWYg Zm9yY2VfYnVmZmVyZV9pbygpIGlzIHRydWUsIHdlIGhhdmUgdG8gYWxsb2NhdGUKKwkJCSAqIGJs b2NrcyBhbGwgdGhlIHRpbWUsIHNpbmNlIGYyZnNfZGlyZWN0X0lPIHdpbGwgZmFsbAorCQkJICog YmFjayB0byBidWZmZXJlZCBJTy4KKwkJCSAqLworCQkJaWYgKCFmMmZzX2ZvcmNlX2J1ZmZlcmVk X2lvKGlub2RlLCBpb2NiLCBmcm9tKSAmJgorCQkJCQlhbGxvd19vdXRwbGFjZV9kaW8oaW5vZGUs IGlvY2IsIGZyb20pKQorCQkJCWdvdG8gd3JpdGU7CisJCX0KKwkJcHJlYWxsb2NhdGVkID0gdHJ1 ZTsKKwkJdGFyZ2V0X3NpemUgPSBpb2NiLT5raV9wb3MgKyBpb3ZfaXRlcl9jb3VudChmcm9tKTsK KworCQllcnIgPSBmMmZzX3ByZWFsbG9jYXRlX2Jsb2Nrcyhpb2NiLCBmcm9tKTsKKwkJaWYgKGVy cikgeworb3V0X2VycjoKKwkJCWNsZWFyX2lub2RlX2ZsYWcoaW5vZGUsIEZJX05PX1BSRUFMTE9D KTsKKwkJCWlub2RlX3VubG9jayhpbm9kZSk7CisJCQlyZXQgPSBlcnI7CisJCQlnb3RvIG91dDsK IAkJfQord3JpdGU6CiAJCXJldCA9IF9fZ2VuZXJpY19maWxlX3dyaXRlX2l0ZXIoaW9jYiwgZnJv bSk7CiAJCWNsZWFyX2lub2RlX2ZsYWcoaW5vZGUsIEZJX05PX1BSRUFMTE9DKTsKIAotLSAKMi4y MC4xCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxp bnV4LWYyZnMtZGV2ZWwgbWFpbGluZyBsaXN0CkxpbnV4LWYyZnMtZGV2ZWxAbGlzdHMuc291cmNl Zm9yZ2UubmV0Cmh0dHBzOi8vbGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZvL2xp bnV4LWYyZnMtZGV2ZWwK 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=-10.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,USER_AGENT_GIT 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 06966C3B19D for ; Fri, 14 Feb 2020 16:02:15 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id CF4A32168B for ; Fri, 14 Feb 2020 16:02:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1581696134; bh=tNTO4ct9SDI8I9KV6SDwnENGAUGgcphrJePh9bylMEQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=etnao1Myd6/NeKAwZy/eOvRsnA4PFvFVxlXJCRiCSRV9dRCjIuiCprdkXLthQfBiW N3y4HKvUXTKp1HFxCZcnUVRNe9wWtLDFbUyqTMUkug17sE3t98/H+cPPGjW/dbQxGQ dNhO4z8g6EiU9y6g8uNIPJyaX6BZZ58OoCx/uvS0= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389279AbgBNQCN (ORCPT ); Fri, 14 Feb 2020 11:02:13 -0500 Received: from mail.kernel.org ([198.145.29.99]:48138 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2389241AbgBNQCF (ORCPT ); Fri, 14 Feb 2020 11:02:05 -0500 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id B33C5217F4; Fri, 14 Feb 2020 16:02:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1581696124; bh=tNTO4ct9SDI8I9KV6SDwnENGAUGgcphrJePh9bylMEQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MjAdtUHBvNiO34SQPzA/6dBz7Cw7g3zOREQR2moJi0WGRCTMNrpmrjKZii+xMdlbY an+J8piknv5YE/erYGDTbtBmJOlfP/ZSVpDP7k4FknriQF9KyD+7t68kwpaVl/wZlU WdIwmLaur1KRhk/5Fj5HjHz2jn7zuyzT3+ya38Pc= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Jaegeuk Kim , Javier Gonzalez , Damien Le Moal , Shin'ichiro Kawasaki , Chao Yu , Sasha Levin , linux-f2fs-devel@lists.sourceforge.net Subject: [PATCH AUTOSEL 5.4 011/459] f2fs: preallocate DIO blocks when forcing buffered_io Date: Fri, 14 Feb 2020 10:54:21 -0500 Message-Id: <20200214160149.11681-11-sashal@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200214160149.11681-1-sashal@kernel.org> References: <20200214160149.11681-1-sashal@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Jaegeuk Kim [ Upstream commit 47501f87c61ad2aa234add63e1ae231521dbc3f5 ] The previous preallocation and DIO decision like below. allow_outplace_dio !allow_outplace_dio f2fs_force_buffered_io (*) No_Prealloc / Buffered_IO Prealloc / Buffered_IO !f2fs_force_buffered_io No_Prealloc / DIO Prealloc / DIO But, Javier reported Case (*) where zoned device bypassed preallocation but fell back to buffered writes in f2fs_direct_IO(), resulting in stale data being read. In order to fix the issue, actually we need to preallocate blocks whenever we fall back to buffered IO like this. No change is made in the other cases. allow_outplace_dio !allow_outplace_dio f2fs_force_buffered_io (*) Prealloc / Buffered_IO Prealloc / Buffered_IO !f2fs_force_buffered_io No_Prealloc / DIO Prealloc / DIO Reported-and-tested-by: Javier Gonzalez Signed-off-by: Damien Le Moal Tested-by: Shin'ichiro Kawasaki Reviewed-by: Chao Yu Reviewed-by: Javier González Signed-off-by: Jaegeuk Kim Signed-off-by: Sasha Levin --- fs/f2fs/data.c | 13 ------------- fs/f2fs/file.c | 43 +++++++++++++++++++++++++++++++++---------- 2 files changed, 33 insertions(+), 23 deletions(-) diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c index 2e9c731658008..5d6fd940aab2e 100644 --- a/fs/f2fs/data.c +++ b/fs/f2fs/data.c @@ -1074,19 +1074,6 @@ int f2fs_preallocate_blocks(struct kiocb *iocb, struct iov_iter *from) int err = 0; bool direct_io = iocb->ki_flags & IOCB_DIRECT; - /* convert inline data for Direct I/O*/ - if (direct_io) { - err = f2fs_convert_inline_inode(inode); - if (err) - return err; - } - - if (direct_io && allow_outplace_dio(inode, iocb, from)) - return 0; - - if (is_inode_flag_set(inode, FI_NO_PREALLOC)) - return 0; - map.m_lblk = F2FS_BLK_ALIGN(iocb->ki_pos); map.m_len = F2FS_BYTES_TO_BLK(iocb->ki_pos + iov_iter_count(from)); if (map.m_len > map.m_lblk) diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index 72f308790a8e5..44bc5f4a9ce19 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -3348,18 +3348,41 @@ static ssize_t f2fs_file_write_iter(struct kiocb *iocb, struct iov_iter *from) ret = -EAGAIN; goto out; } - } else { - preallocated = true; - target_size = iocb->ki_pos + iov_iter_count(from); + goto write; + } - err = f2fs_preallocate_blocks(iocb, from); - if (err) { - clear_inode_flag(inode, FI_NO_PREALLOC); - inode_unlock(inode); - ret = err; - goto out; - } + if (is_inode_flag_set(inode, FI_NO_PREALLOC)) + goto write; + + if (iocb->ki_flags & IOCB_DIRECT) { + /* + * Convert inline data for Direct I/O before entering + * f2fs_direct_IO(). + */ + err = f2fs_convert_inline_inode(inode); + if (err) + goto out_err; + /* + * If force_buffere_io() is true, we have to allocate + * blocks all the time, since f2fs_direct_IO will fall + * back to buffered IO. + */ + if (!f2fs_force_buffered_io(inode, iocb, from) && + allow_outplace_dio(inode, iocb, from)) + goto write; + } + preallocated = true; + target_size = iocb->ki_pos + iov_iter_count(from); + + err = f2fs_preallocate_blocks(iocb, from); + if (err) { +out_err: + clear_inode_flag(inode, FI_NO_PREALLOC); + inode_unlock(inode); + ret = err; + goto out; } +write: ret = __generic_file_write_iter(iocb, from); clear_inode_flag(inode, FI_NO_PREALLOC); -- 2.20.1