Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp4314425pxj; Wed, 12 May 2021 02:54:25 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyZBLMcMiKwT95mV9ktQj9xdA0bJaQbJzSK67OCfG67Du9EohXgsuZOgk5u38b5O4FtbnjZ X-Received: by 2002:a05:6602:2bc3:: with SMTP id s3mr19547478iov.12.1620813264990; Wed, 12 May 2021 02:54:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620813264; cv=none; d=google.com; s=arc-20160816; b=OXCRQ/l2zbbTdV+XSjqVZeZ4GWBpw/V1zhhDpFcu8p5RPmr+HT3l7SJeInfqm8pEwM k94UT8hPyv+RXSStyIvEJGGUIYEczqQ2jBsmgAM8dxBJ54WiHqTbpk8ENJgD0CPnt/s5 KV6YFnmiDAlzPe37N+o+7lb0eWxaZGfqvJSqUXitral7NNu9H7FPyPpgw8qjQzMFkZwO AUy0BHOxYCSvhN4Z1VSmo/OhmqzuX68hHQJf69oRTybkk9AU3enp+SjAi5K1x+vSwLQV sA7nLh+K2XSUvpbnEbYb4STTwt5PdFpyqq34YZ2RGPo6BkbA0s78SyVCfCZySVXoXHfx TjhQ== 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; bh=dT2ZQpr2FHjUigwTfeHNC8s/oba2NdnTx2Za7u+bFUw=; b=JGUkDiSWkGH64kMkvdOxndX+n8pN6xOsdeMdnWLtmlEvWjMXgkfblRS3r3fXhngsVb WodlI4cAEClTXUcCtykuWs7zBv5eME087es/txDoFZwwlv42dN5BhJE68a9HX88MtkgR eYH0BJrhJKXmuXfkjz3mNudGVCLfomXIopDoN0a8DZ5s1Sp1Y4D8e4fuQE1iQBnlgULV tzamu1pnuz7Z0Ml4uItQWVQg9meJ4Jf4GuHtRmHRm5y+yt+HBI2gRJ6G7mt/+lCO5BAo 0fJ2NcAeMgV9Ugx2dQ3PqbNTPYnGyp8eZG2+CQOuw5e5Rvyyl2qtz7JUrZwe/DU6PJJ+ EHAw== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id b11si19378143jat.114.2021.05.12.02.54.11; Wed, 12 May 2021 02:54:24 -0700 (PDT) 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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230228AbhELJy2 (ORCPT + 99 others); Wed, 12 May 2021 05:54:28 -0400 Received: from szxga04-in.huawei.com ([45.249.212.190]:3734 "EHLO szxga04-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230019AbhELJyW (ORCPT ); Wed, 12 May 2021 05:54:22 -0400 Received: from DGGEMS402-HUB.china.huawei.com (unknown [172.30.72.58]) by szxga04-in.huawei.com (SkyGuard) with ESMTP id 4Fg94X6dhbzqTTw; Wed, 12 May 2021 17:49:48 +0800 (CST) Received: from szvp000203569.huawei.com (10.120.216.130) by DGGEMS402-HUB.china.huawei.com (10.3.19.202) with Microsoft SMTP Server id 14.3.498.0; Wed, 12 May 2021 17:53:04 +0800 From: Chao Yu To: CC: , , , Chao Yu Subject: [PATCH 3/3] f2fs: compress: remove unneeded preallocation Date: Wed, 12 May 2021 17:52:58 +0800 Message-ID: <20210512095258.96918-3-yuchao0@huawei.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210512095258.96918-1-yuchao0@huawei.com> References: <20210512095258.96918-1-yuchao0@huawei.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-Originating-IP: [10.120.216.130] X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org We will reserve iblocks for compression saved, so during compressed cluster overwrite, we don't need to preallocate blocks for later write. In addition, it adds a bug_on to detect wrong reserved iblock number in __f2fs_cluster_blocks(). Signed-off-by: Chao Yu --- fs/f2fs/compress.c | 26 ++------------------------ fs/f2fs/file.c | 4 ---- 2 files changed, 2 insertions(+), 28 deletions(-) diff --git a/fs/f2fs/compress.c b/fs/f2fs/compress.c index b6bd6862eef2..25e785e0d9fc 100644 --- a/fs/f2fs/compress.c +++ b/fs/f2fs/compress.c @@ -932,6 +932,8 @@ static int __f2fs_cluster_blocks(struct inode *inode, ret++; } } + + f2fs_bug_on(F2FS_I_SB(inode), !compr && ret != cluster_size); } fail: f2fs_put_dnode(&dn); @@ -992,21 +994,16 @@ static int prepare_compress_overwrite(struct compress_ctx *cc, struct f2fs_sb_info *sbi = F2FS_I_SB(cc->inode); struct address_space *mapping = cc->inode->i_mapping; struct page *page; - struct dnode_of_data dn; sector_t last_block_in_bio; unsigned fgp_flag = FGP_LOCK | FGP_WRITE | FGP_CREAT; pgoff_t start_idx = start_idx_of_cluster(cc); int i, ret; - bool prealloc; retry: ret = f2fs_is_compressed_cluster(cc->inode, start_idx); if (ret <= 0) return ret; - /* compressed case */ - prealloc = (ret < cc->cluster_size); - ret = f2fs_init_compress_ctx(cc); if (ret) return ret; @@ -1064,25 +1061,6 @@ static int prepare_compress_overwrite(struct compress_ctx *cc, } } - if (prealloc) { - f2fs_do_map_lock(sbi, F2FS_GET_BLOCK_PRE_AIO, true); - - set_new_dnode(&dn, cc->inode, NULL, NULL, 0); - - for (i = cc->cluster_size - 1; i > 0; i--) { - ret = f2fs_get_block(&dn, start_idx + i); - if (ret) { - i = cc->cluster_size; - break; - } - - if (dn.data_blkaddr != NEW_ADDR) - break; - } - - f2fs_do_map_lock(sbi, F2FS_GET_BLOCK_PRE_AIO, false); - } - if (likely(!ret)) { *fsdata = cc->rpages; *pagep = cc->rpages[offset_in_cluster(cc, index)]; diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index 9241e8e3ffff..1dd69c88be36 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -85,10 +85,6 @@ static vm_fault_t f2fs_vm_page_mkwrite(struct vm_fault *vmf) err = ret; goto err; } else if (ret) { - if (ret < F2FS_I(inode)->i_cluster_size) { - err = -EAGAIN; - goto err; - } need_alloc = false; } } -- 2.29.2