Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp982594ybt; Wed, 17 Jun 2020 19:53:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwVM+KunJfBVmk+EDfYG7td2XykgVrnEHp7wiisduq+19AWJbM6KCsFcXrQpKWKy1DUl8m9 X-Received: by 2002:a17:907:10d1:: with SMTP id rv17mr1956685ejb.51.1592448792566; Wed, 17 Jun 2020 19:53:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592448792; cv=none; d=google.com; s=arc-20160816; b=kmrCsORzQIe/gJqRJ/CyrIUxs19QgyIKwWFQgStOZ6HJdQBlrOFOxA5YLUg/mwL4L0 9Ld6hl2HsWEtjDPNr90zZWZmpxxtqST21S03mG3Mb4n3RL8f+CnFbS7uLW94g0nyhWot N8wiyzDn1RgAlh4znCTRByyL7anrTbtb1t6d7Bp1SY8KWAJjd8j52raA6bKmEQEexLDx LqSm+kCMYVuz8yndZlkY2bhxNjkp7dwUfvOPmVBL2icOP6vuD0XQhgYSKSrgfKUAWPsN 5IQLbVjdFNLj0lkwJZKzGgFGS51dU5wBu8UBf+9pHUKmao5jVUleb/qtNpx4QPu9u104 qffA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=4LnRiSm3QmtEiITy4NyjAIss6/TSoDTg6hz1/U6Klp0=; b=UUyLl7iL01Q8p2Yw8xC/90S4fVumAhm4qni19uoZbOGJDdyALPb+YkEMBeds+1AhmW EYgCU4EliQhkQrNrYcDBYNhh93lMAYrVT2JwaPyIIJF7NkcXOax9EffmX9eml8fWESWc uFnenEc67RkHzdjJQvqwH3OtbJT422zDNooVm84JEPL+m9+mGyrE432TmdOZYDn6B7zj 7/uZQ1zQT5jhM3BU6cUHgIhRVmfCyFsMVarXfkcyDVbBS9QgVKpijB0cym8JS3OW5qCU E45qUDgicLJrtUyPuOPslfpNI0w9i+Ja3wfOC2j5HfZgoG/I1HXdW4ah5Wr1mV8pi33T XglA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=uAZggeOk; 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 w6si1023150ejn.265.2020.06.17.19.52.50; Wed, 17 Jun 2020 19:53:12 -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; dkim=pass header.i=@kernel.org header.s=default header.b=uAZggeOk; 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 S1728035AbgFRBJG (ORCPT + 99 others); Wed, 17 Jun 2020 21:09:06 -0400 Received: from mail.kernel.org ([198.145.29.99]:34884 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727955AbgFRBIx (ORCPT ); Wed, 17 Jun 2020 21:08:53 -0400 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 BEF8F21D6C; Thu, 18 Jun 2020 01:08:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1592442532; bh=ekHxHA0/0+ucEtW0CwYzY4lQSV0nX8LCO1zOta4a1Pc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=uAZggeOkvT3ekpDhaLarJ6ZVm9oI74gI8HmlIOJYTf1udMgvAr2bP0Iev9Yk7HgVL MFTQ9BxAALllkpPeKIpQRusI4JcKsxem/fZMPZoyq1KK3OO1Qa8c0rkQi7+XKavliY ZidYMIE3NHoVWHUimbhtxtMbZxX5wqjHBv/Ic8P8= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Chao Yu , Daeho Jeong , Jaegeuk Kim , Sasha Levin , linux-f2fs-devel@lists.sourceforge.net Subject: [PATCH AUTOSEL 5.7 035/388] f2fs: compress: let lz4 compressor handle output buffer budget properly Date: Wed, 17 Jun 2020 21:02:12 -0400 Message-Id: <20200618010805.600873-35-sashal@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200618010805.600873-1-sashal@kernel.org> References: <20200618010805.600873-1-sashal@kernel.org> MIME-Version: 1.0 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: Chao Yu [ Upstream commit f6644143c63f2eac88973f7fea087582579b0189 ] Commonly, in order to handle lz4 worst compress case, caller should allocate buffer with size of LZ4_compressBound(inputsize) for target compressed data storing, however in this case, if caller didn't allocate enough space, lz4 compressor still can handle output buffer budget properly, and end up compressing when left space in output buffer is not enough. So we don't have to allocate buffer with size for worst case, then we can avoid 2 * 4KB size intermediate buffer allocation when log_cluster_size is 2, and avoid unnecessary compressing work of compressor if we can not save at least 4KB space. Suggested-by: Daeho Jeong Signed-off-by: Chao Yu Signed-off-by: Jaegeuk Kim Signed-off-by: Sasha Levin --- fs/f2fs/compress.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/fs/f2fs/compress.c b/fs/f2fs/compress.c index df7b2d15eacd..c05801758a35 100644 --- a/fs/f2fs/compress.c +++ b/fs/f2fs/compress.c @@ -236,7 +236,12 @@ static int lz4_init_compress_ctx(struct compress_ctx *cc) if (!cc->private) return -ENOMEM; - cc->clen = LZ4_compressBound(PAGE_SIZE << cc->log_cluster_size); + /* + * we do not change cc->clen to LZ4_compressBound(inputsize) to + * adapt worst compress case, because lz4 compressor can handle + * output budget properly. + */ + cc->clen = cc->rlen - PAGE_SIZE - COMPRESS_HEADER_SIZE; return 0; } @@ -252,11 +257,9 @@ static int lz4_compress_pages(struct compress_ctx *cc) len = LZ4_compress_default(cc->rbuf, cc->cbuf->cdata, cc->rlen, cc->clen, cc->private); - if (!len) { - printk_ratelimited("%sF2FS-fs (%s): lz4 compress failed\n", - KERN_ERR, F2FS_I_SB(cc->inode)->sb->s_id); - return -EIO; - } + if (!len) + return -EAGAIN; + cc->clen = len; return 0; } -- 2.25.1