From patchwork Thu Aug 17 08:28:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gao Xiang X-Patchwork-Id: 135896 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b82d:0:b0:3f2:4152:657d with SMTP id z13csp751667vqi; Thu, 17 Aug 2023 07:43:21 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFNICS3WAHHgcW5pwCTCw52dfpIpGafncokFs2Ey7NQdVgdyfbRGMWfssBUOPEF3EmQbc1D X-Received: by 2002:a17:902:f547:b0:1b8:8682:62fb with SMTP id h7-20020a170902f54700b001b8868262fbmr3923809plf.4.1692283400673; Thu, 17 Aug 2023 07:43:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1692283400; cv=none; d=google.com; s=arc-20160816; b=g+08yfY8Vu0w+YLjiebY9g0PLQGVmBIzBTcPHVifltFbgJzdXjEtRjNOnCvdRbQSQV KN5Lm2oQuzaXpBHpdIlXsFd6JtC2zXHV0f8iDKQjFKBXl0CzpbMi8rX7AS7pFE+4zQ3k okDG5uELIQ0oz1VLckJczsQlQ92gRzd13EAEfRdNlh3Z+PqrpAw/62KsFMXbQBUGZoOf Uzc2y/z05VU0aLAs31Y2LlaAc1XelGWS3lFFKdOgXh0LZ4dKDHi7Yz4YD5nLRT9grOlH Kn6VCA0msR5T5wedNYbyds0ghQ2EdIFjsYbkdUKumIhk+VLAxPxW8MlDk423bzJzrPvb eHiA== 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 :message-id:date:subject:cc:to:from; bh=K4ibf/Wgvcu7n/gmUNqlGpjZfg8vinCOE7XicJioKuI=; fh=6M1tiiGstqIPK59OU/5PZEn4tpwoMyiGaEUnmsU2vZI=; b=RTpQDxTc1ISQ5K9bpLswqry1/e1e9VBYLHDkNZf3SVoZRwH/t012nRGeLMGF87k/gG CskqT1n6ctbvYa+yOv6IIMwOKk43B+NzNlorh9v62hqJk7uDvY5nBNPntnfXbO/Vg9jQ kvZUAWr9oXwqi22rh57N/TAeTDKj6IIoNRsa/NmreZIxEVsECWCcxaFKLknh5MOGVyKv HtLSIxwVn63YAWDjieOeuSknxsUjfxJAdfBZ8IaP8yXJTMbYzCigWWJMpsSrNS5i7ZM8 mtOvwLgN5nr/UggGlvP6kSv+JLm5Fb0YZ2jQBN5xH+0wQyef2mJJu+PRQlkjolDs7Pu9 Tmjw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=alibaba.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id l17-20020a170902f69100b001bd9e2b4b46si13973619plg.601.2023.08.17.07.43.06; Thu, 17 Aug 2023 07:43:20 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=alibaba.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1348900AbjHQI3G (ORCPT + 99 others); Thu, 17 Aug 2023 04:29:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60830 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1348899AbjHQI2k (ORCPT ); Thu, 17 Aug 2023 04:28:40 -0400 Received: from out30-118.freemail.mail.aliyun.com (out30-118.freemail.mail.aliyun.com [115.124.30.118]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4845A30D4 for ; Thu, 17 Aug 2023 01:28:23 -0700 (PDT) X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R961e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018045192;MF=hsiangkao@linux.alibaba.com;NM=1;PH=DS;RN=3;SR=0;TI=SMTPD_---0Vpz9Qw2_1692260894; Received: from e18g06460.et15sqa.tbsite.net(mailfrom:hsiangkao@linux.alibaba.com fp:SMTPD_---0Vpz9Qw2_1692260894) by smtp.aliyun-inc.com; Thu, 17 Aug 2023 16:28:19 +0800 From: Gao Xiang To: linux-erofs@lists.ozlabs.org Cc: LKML , Gao Xiang Subject: [PATCH 1/8] erofs: simplify z_erofs_read_fragment() Date: Thu, 17 Aug 2023 16:28:06 +0800 Message-Id: <20230817082813.81180-1-hsiangkao@linux.alibaba.com> X-Mailer: git-send-email 2.24.4 MIME-Version: 1.0 X-Spam-Status: No, score=-9.9 required=5.0 tests=BAYES_00, ENV_AND_HDR_SPF_MATCH,RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS, UNPARSEABLE_RELAY,USER_IN_DEF_SPF_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1774487758886615671 X-GMAIL-MSGID: 1774487758886615671 A trivial cleanup to make the fragment handling logic more clear. Signed-off-by: Gao Xiang Reviewed-by: Chao Yu Reviewed-by: Chao Yu Reviewed-by: Chao Yu --- fs/erofs/zdata.c | 39 +++++++++++++-------------------------- 1 file changed, 13 insertions(+), 26 deletions(-) diff --git a/fs/erofs/zdata.c b/fs/erofs/zdata.c index 53820271e538..dc104add0a99 100644 --- a/fs/erofs/zdata.c +++ b/fs/erofs/zdata.c @@ -932,34 +932,27 @@ static bool z_erofs_collector_end(struct z_erofs_decompress_frontend *fe) return true; } -static int z_erofs_read_fragment(struct inode *inode, erofs_off_t pos, - struct page *page, unsigned int pageofs, - unsigned int len) +static int z_erofs_read_fragment(struct super_block *sb, struct page *page, + unsigned int cur, unsigned int end, erofs_off_t pos) { - struct super_block *sb = inode->i_sb; - struct inode *packed_inode = EROFS_I_SB(inode)->packed_inode; + struct inode *packed_inode = EROFS_SB(sb)->packed_inode; struct erofs_buf buf = __EROFS_BUF_INITIALIZER; - u8 *src, *dst; - unsigned int i, cnt; + unsigned int cnt; + u8 *src; if (!packed_inode) return -EFSCORRUPTED; buf.inode = packed_inode; - pos += EROFS_I(inode)->z_fragmentoff; - for (i = 0; i < len; i += cnt) { - cnt = min_t(unsigned int, len - i, + for (; cur < end; cur += cnt, pos += cnt) { + cnt = min_t(unsigned int, end - cur, sb->s_blocksize - erofs_blkoff(sb, pos)); src = erofs_bread(&buf, erofs_blknr(sb, pos), EROFS_KMAP); if (IS_ERR(src)) { erofs_put_metabuf(&buf); return PTR_ERR(src); } - - dst = kmap_local_page(page); - memcpy(dst + pageofs + i, src + erofs_blkoff(sb, pos), cnt); - kunmap_local(dst); - pos += cnt; + memcpy_to_page(page, cur, src + erofs_blkoff(sb, pos), cnt); } erofs_put_metabuf(&buf); return 0; @@ -972,7 +965,7 @@ static int z_erofs_do_read_page(struct z_erofs_decompress_frontend *fe, struct erofs_map_blocks *const map = &fe->map; const loff_t offset = page_offset(page); bool tight = true, exclusive; - unsigned int cur, end, spiltted; + unsigned int cur, end, len, spiltted; int err = 0; /* register locked file pages as online pages in pack */ @@ -1041,17 +1034,11 @@ static int z_erofs_do_read_page(struct z_erofs_decompress_frontend *fe, goto next_part; } if (map->m_flags & EROFS_MAP_FRAGMENT) { - unsigned int pageofs, skip, len; + erofs_off_t fpos = offset + cur - map->m_la; - if (offset > map->m_la) { - pageofs = 0; - skip = offset - map->m_la; - } else { - pageofs = map->m_la & ~PAGE_MASK; - skip = 0; - } - len = min_t(unsigned int, map->m_llen - skip, end - cur); - err = z_erofs_read_fragment(inode, skip, page, pageofs, len); + len = min_t(unsigned int, map->m_llen - fpos, end - cur); + err = z_erofs_read_fragment(inode->i_sb, page, cur, cur + len, + EROFS_I(inode)->z_fragmentoff + fpos); if (err) goto out; ++spiltted; From patchwork Thu Aug 17 08:28:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gao Xiang X-Patchwork-Id: 136007 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b82d:0:b0:3f2:4152:657d with SMTP id z13csp1290922vqi; Fri, 18 Aug 2023 03:14:01 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFZSXKmbDkTrzozWrd+7ytyjueZUPDtOj2Zp+k4xPfXaPmt4ZGSUWTUHTWKe8ft/E+Ek685 X-Received: by 2002:a05:6a20:258c:b0:134:e14c:851b with SMTP id k12-20020a056a20258c00b00134e14c851bmr2484756pzd.23.1692353641219; Fri, 18 Aug 2023 03:14:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1692353641; cv=none; d=google.com; s=arc-20160816; b=BdxLGJ5fGBosLffKr4RPRqlqWd4opfCRbZPsMHoBvp495yG6eYZ5G5KqUwDJ9ovwix STh0kyn5acEb91ZIdGT9Obx+mLVMMT2cZWkiin3tzMHHvJRYOr/FKoC+pCmWxtaIHfsX G7jqVBBdwjLuQCRrxrSoqiFDls/x8CbEA30NIb8QNI56Ofd+NNx4VniCt2gWbdG/RjDm WYOq8AxlNp+E+7JEAmIEp8lIWNANzjKDcJy8sk64uNxWQ9Z6hewxQTI+qDxXbjMIYbaP Uv218ajO/ZK2MT9yhI3DmN3y9PDS/40I2u0/pUuTg1ptipqweSHTwqrsodcHbpx5l7Wu XaCw== 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=kiqDHSoMc8aOWKe7HYkysTT8iYXwjAb5ruQBlwAdByk=; fh=6M1tiiGstqIPK59OU/5PZEn4tpwoMyiGaEUnmsU2vZI=; b=NNSRMM59NNo4/4u0SbWgl+nJXrGlbkoAcP176IpH+QLW2jN1zh0p+TSDKd1UJocNfE D1ZpUmR+ihj2ZppY0FveAGIhOJ/+Hs2TLhEJNsH2osfpu4RLGATm/K3IYLulAVGjUYcf AC7gOZMTBSvXFQv7XXR+sDdQ2hfkU8oTX/1PZcdAfw3HhN28XV5vN1TveCaTnAitfGZ/ /YzE7GWF8ixZ2+NsJRgU3FMaIw4AA+RLBXQNuntB4BVW3Ln0vuZiofbLgTEYSujl7S4/ z3BY1SvhCXnrXxK5T9MrdTJrenqZUciqsTBE5lQg6VCX7xfgTOEm2wRn0dsegA6jNz6n Qt9w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=alibaba.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s12-20020a170903200c00b001bb6d711625si1177941pla.279.2023.08.18.03.13.43; Fri, 18 Aug 2023 03:14:01 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=alibaba.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1348973AbjHQI3S (ORCPT + 99 others); Thu, 17 Aug 2023 04:29:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60830 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1348925AbjHQI2p (ORCPT ); Thu, 17 Aug 2023 04:28:45 -0400 Received: from out30-133.freemail.mail.aliyun.com (out30-133.freemail.mail.aliyun.com [115.124.30.133]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 576D32D71 for ; Thu, 17 Aug 2023 01:28:31 -0700 (PDT) X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R141e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018046051;MF=hsiangkao@linux.alibaba.com;NM=1;PH=DS;RN=3;SR=0;TI=SMTPD_---0Vpz9R2H_1692260907; Received: from e18g06460.et15sqa.tbsite.net(mailfrom:hsiangkao@linux.alibaba.com fp:SMTPD_---0Vpz9R2H_1692260907) by smtp.aliyun-inc.com; Thu, 17 Aug 2023 16:28:28 +0800 From: Gao Xiang To: linux-erofs@lists.ozlabs.org Cc: LKML , Gao Xiang Subject: [PATCH 6/8] erofs: get rid of fe->backmost for cache decompression Date: Thu, 17 Aug 2023 16:28:11 +0800 Message-Id: <20230817082813.81180-6-hsiangkao@linux.alibaba.com> X-Mailer: git-send-email 2.24.4 In-Reply-To: <20230817082813.81180-1-hsiangkao@linux.alibaba.com> References: <20230817082813.81180-1-hsiangkao@linux.alibaba.com> MIME-Version: 1.0 X-Spam-Status: No, score=-9.9 required=5.0 tests=BAYES_00, ENV_AND_HDR_SPF_MATCH,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS, UNPARSEABLE_RELAY,USER_IN_DEF_SPF_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1774561411507360755 X-GMAIL-MSGID: 1774561411507360755 EROFS_MAP_FULL_MAPPED is more accurate to decide if caching the last incomplete pcluster for later read or not. Signed-off-by: Gao Xiang --- fs/erofs/zdata.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/fs/erofs/zdata.c b/fs/erofs/zdata.c index 4009283944ca..c28945532a02 100644 --- a/fs/erofs/zdata.c +++ b/fs/erofs/zdata.c @@ -528,8 +528,6 @@ struct z_erofs_decompress_frontend { z_erofs_next_pcluster_t owned_head; enum z_erofs_pclustermode mode; - /* used for applying cache strategy on the fly */ - bool backmost; erofs_off_t headoffset; /* a pointer used to pick up inplace I/O pages */ @@ -538,7 +536,7 @@ struct z_erofs_decompress_frontend { #define DECOMPRESS_FRONTEND_INIT(__i) { \ .inode = __i, .owned_head = Z_EROFS_PCLUSTER_TAIL, \ - .mode = Z_EROFS_PCLUSTER_FOLLOWED, .backmost = true } + .mode = Z_EROFS_PCLUSTER_FOLLOWED } static bool z_erofs_should_alloc_cache(struct z_erofs_decompress_frontend *fe) { @@ -547,7 +545,7 @@ static bool z_erofs_should_alloc_cache(struct z_erofs_decompress_frontend *fe) if (cachestrategy <= EROFS_ZIP_CACHE_DISABLED) return false; - if (fe->backmost) + if (!(fe->map.m_flags & EROFS_MAP_FULL_MAPPED)) return true; if (cachestrategy >= EROFS_ZIP_CACHE_READAROUND && @@ -939,7 +937,6 @@ static void z_erofs_pcluster_end(struct z_erofs_decompress_frontend *fe) erofs_workgroup_put(&pcl->obj); fe->pcl = NULL; - fe->backmost = false; } static int z_erofs_read_fragment(struct super_block *sb, struct page *page, From patchwork Thu Aug 17 08:28:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gao Xiang X-Patchwork-Id: 135903 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b82d:0:b0:3f2:4152:657d with SMTP id z13csp768214vqi; Thu, 17 Aug 2023 08:06:39 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH+8d7HtzJf40dZNxdGjBMttevbfh+TdIK0TvTT0gdIkNt9hg9y07WP+rPTr1BoISQcAp69 X-Received: by 2002:a17:906:5307:b0:99c:281:9987 with SMTP id h7-20020a170906530700b0099c02819987mr3951499ejo.36.1692284799134; Thu, 17 Aug 2023 08:06:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1692284799; cv=none; d=google.com; s=arc-20160816; b=F44lyIfk5XdlNQLAIWZ24sbuecbW5GAh8Edeh1PuTEkS65j578a+kSqYqiBeAAPR8l O/J0wml6mgNZQzcaf2h04lZQEM6cFGEy3VjyAC4HRagF6aQsYJ4Ud5gjhdyPK40biGR4 /He1BXK9djMYccmwyjy1o7pVvO3FQRZKx/vu+hI2T77gjk4m54MkBit9qhjjDR75wWov cNYU4bmZLB1EFlUT6NCw8mU4X/53Dz9pQhl4S9ypf0CrEnTzA8hN76jefo2oxPYHDSNM abnQrrXpyb0N59GvsAUo/684rn1I2YIUaToTNJAjtZL/lbxqT+AafS6vOJEq/HCFVd3V KBhA== 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=kTJGF5weoTTaaKRE0E3H78nT1U1N8YkiIbc4VJLkmg4=; fh=6M1tiiGstqIPK59OU/5PZEn4tpwoMyiGaEUnmsU2vZI=; b=crzlMnzEqTlisahXAzADwcCLP7s3JNyiENrgvouN7hntuweU+O3pdMwlL5pOX86RjN 25pnG4VvNkwK5sWuuEh21FSlB8Knyv0egn7PrKbJ20vt62Yf4uCR7Nrvv2tWFmj6PuZn zYJv+pJ/TtCLwlv3A3XWUvsmw83E2SY+Ysa49clSLZg/KxMl4qTj30q+1ay2esoSvSol tSVSPrAC5LRyH6ZzErqTVRHRX4GnF2ndJbTp8eMO2Tk7uzZ0lDmf5edUMSNKG+Z2XFyr F0G+YZlUnjsXwu2xzufb245I7ByUThw/HWO1qj4EDRa1nA+qpo9BM+zi5Ts6F7t7HCLP kpPA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=alibaba.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id h18-20020a170906829200b009939765332dsi12752793ejx.329.2023.08.17.08.06.01; Thu, 17 Aug 2023 08:06:39 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=alibaba.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1349017AbjHQI31 (ORCPT + 99 others); Thu, 17 Aug 2023 04:29:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53928 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1348938AbjHQI2r (ORCPT ); Thu, 17 Aug 2023 04:28:47 -0400 Received: from out30-132.freemail.mail.aliyun.com (out30-132.freemail.mail.aliyun.com [115.124.30.132]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3EBC030DB for ; Thu, 17 Aug 2023 01:28:34 -0700 (PDT) X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R391e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018045168;MF=hsiangkao@linux.alibaba.com;NM=1;PH=DS;RN=3;SR=0;TI=SMTPD_---0Vpz9R34_1692260908; Received: from e18g06460.et15sqa.tbsite.net(mailfrom:hsiangkao@linux.alibaba.com fp:SMTPD_---0Vpz9R34_1692260908) by smtp.aliyun-inc.com; Thu, 17 Aug 2023 16:28:29 +0800 From: Gao Xiang To: linux-erofs@lists.ozlabs.org Cc: LKML , Gao Xiang Subject: [PATCH 7/8] erofs: adapt folios for z_erofs_readahead() Date: Thu, 17 Aug 2023 16:28:12 +0800 Message-Id: <20230817082813.81180-7-hsiangkao@linux.alibaba.com> X-Mailer: git-send-email 2.24.4 In-Reply-To: <20230817082813.81180-1-hsiangkao@linux.alibaba.com> References: <20230817082813.81180-1-hsiangkao@linux.alibaba.com> MIME-Version: 1.0 X-Spam-Status: No, score=-9.9 required=5.0 tests=BAYES_00, ENV_AND_HDR_SPF_MATCH,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS, UNPARSEABLE_RELAY,USER_IN_DEF_SPF_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1774489225441546482 X-GMAIL-MSGID: 1774489225441546482 It's a straight-forward conversion except that readahead_folio() will do folio_put() in advance but it doesn't matter since folios are still locked. As before, since file-backed folios (pages for now) are locked, so we could temporarily use folio->private as an internal counter to indicate split parts of each folio for the corresponding pclusters to decompress. When such counter becomes zero, the folio will be finally unlocked (see compress.h and z_erofs_onlinepage_endio()). Signed-off-by: Gao Xiang Reviewed-by: Chao Yu --- fs/erofs/zdata.c | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/fs/erofs/zdata.c b/fs/erofs/zdata.c index c28945532a02..79cadb88e8bf 100644 --- a/fs/erofs/zdata.c +++ b/fs/erofs/zdata.c @@ -1852,37 +1852,35 @@ static void z_erofs_readahead(struct readahead_control *rac) struct inode *const inode = rac->mapping->host; struct erofs_sb_info *const sbi = EROFS_I_SB(inode); struct z_erofs_decompress_frontend f = DECOMPRESS_FRONTEND_INIT(inode); - struct page *head = NULL, *page; - unsigned int nr_pages; + struct folio *head = NULL, *folio; + unsigned int nr_folios; + int err; f.headoffset = readahead_pos(rac); z_erofs_pcluster_readmore(&f, rac, true); - nr_pages = readahead_count(rac); - trace_erofs_readpages(inode, readahead_index(rac), nr_pages, false); + nr_folios = readahead_count(rac); + trace_erofs_readpages(inode, readahead_index(rac), nr_folios, false); - while ((page = readahead_page(rac))) { - set_page_private(page, (unsigned long)head); - head = page; + while ((folio = readahead_folio(rac))) { + folio->private = head; + head = folio; } + /* traverse in reverse order for best metadata I/O performance */ while (head) { - struct page *page = head; - int err; - - /* traversal in reverse order */ - head = (void *)page_private(page); + folio = head; + head = folio_get_private(folio); - err = z_erofs_do_read_page(&f, page); + err = z_erofs_do_read_page(&f, &folio->page); if (err && err != -EINTR) - erofs_err(inode->i_sb, "readahead error %d @ %lu of nid %llu", - err, page->index, EROFS_I(inode)->nid); - put_page(page); + erofs_err(inode->i_sb, "readahead error at folio %lu @ nid %llu", + folio->index, EROFS_I(inode)->nid); } z_erofs_pcluster_readmore(&f, rac, false); z_erofs_pcluster_end(&f); - z_erofs_runqueue(&f, z_erofs_is_sync_decompress(sbi, nr_pages), true); + z_erofs_runqueue(&f, z_erofs_is_sync_decompress(sbi, nr_folios), true); erofs_put_metabuf(&f.map.buf); erofs_release_pages(&f.pagepool); } From patchwork Thu Aug 17 08:28:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gao Xiang X-Patchwork-Id: 135877 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b82d:0:b0:3f2:4152:657d with SMTP id z13csp646545vqi; Thu, 17 Aug 2023 05:04:44 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG8ehPJMU8i2SgkfWcVFC+vB6WiuWhqveCsp+sIJqzkp1U8zHJU9SZOoU3YCcD3r2eDahy5 X-Received: by 2002:a17:906:7389:b0:994:673:8af6 with SMTP id f9-20020a170906738900b0099406738af6mr3975263ejl.29.1692273884074; Thu, 17 Aug 2023 05:04:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1692273884; cv=none; d=google.com; s=arc-20160816; b=Z03TCo+stUplrZ1x5+F85SMdwuRZkVmdvkpV+hGZ035fcXoWb4PixOa7PWtLlyYbAu wNibpfgMfxfb1EftP0We0qmqLJseAbWJ/CUfbhAb/u45oqbpduP8Q/Vonh0XcoYP+rCz 5CKgDwSXzRJduYTygRYdfoKXrXioaPRfuk+/Zt7imq673HLCu4VpJu8iWwxoqwu5Wqtv FCRQ2mWx/M1WKrzVd8HSIFYZBJwCqoyl1cP4UWfo2tYmZHPX1P1Ng50UH324dIjp/FZ2 Fvh70Do7CpM6E9yoFTvnCWzWD4pZYh0ASBOGxO35zIkcDAgnHyHEVjKHa5UlQUYYScQv alfw== 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=2LE8Yab75V4CSLK00gfta/ad2nImja8SzKP1sRiEpVg=; fh=6M1tiiGstqIPK59OU/5PZEn4tpwoMyiGaEUnmsU2vZI=; b=J310Z298ksPpvxLVfjhfW1GUqeo07RUpsJfbA2m/3kQsoWg2r0eJFFK/hm2du7xIdS mLWgeq3tEwuoG/ehFLCrfRClXeA2gsb1Vwh4JwNzHHGuiqWB1Rq+9IpjMHBgGaqa4T6f +hcY5uwD4nUZH4cA+BueLcja315VdtD0gpObG659ox/wFIm0W1PCyjOvQK/C5IRVbx9F 4vHc1JskPcFqPLPaRbKIOWdVTvLwMWTttSaKSKJFjMHPQS+XJ3F7vptzVUHts0eIVDQm em6HmVElzvyBZ6jyVvD5wKvvFKN3jOKA02ktuh34vakYbGkhFcsyM1HCNyX5JSDS30ar tDwA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=alibaba.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id v9-20020a170906338900b0099bcb8f4f00si12303607eja.409.2023.08.17.05.04.08; Thu, 17 Aug 2023 05:04:44 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=alibaba.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1349012AbjHQI3Z (ORCPT + 99 others); Thu, 17 Aug 2023 04:29:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60896 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1348926AbjHQI2p (ORCPT ); Thu, 17 Aug 2023 04:28:45 -0400 Received: from out30-99.freemail.mail.aliyun.com (out30-99.freemail.mail.aliyun.com [115.124.30.99]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D74B130C3 for ; Thu, 17 Aug 2023 01:28:33 -0700 (PDT) X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R701e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018045168;MF=hsiangkao@linux.alibaba.com;NM=1;PH=DS;RN=3;SR=0;TI=SMTPD_---0Vpz9R3t_1692260909; Received: from e18g06460.et15sqa.tbsite.net(mailfrom:hsiangkao@linux.alibaba.com fp:SMTPD_---0Vpz9R3t_1692260909) by smtp.aliyun-inc.com; Thu, 17 Aug 2023 16:28:30 +0800 From: Gao Xiang To: linux-erofs@lists.ozlabs.org Cc: LKML , Gao Xiang Subject: [PATCH 8/8] erofs: adapt folios for z_erofs_read_folio() Date: Thu, 17 Aug 2023 16:28:13 +0800 Message-Id: <20230817082813.81180-8-hsiangkao@linux.alibaba.com> X-Mailer: git-send-email 2.24.4 In-Reply-To: <20230817082813.81180-1-hsiangkao@linux.alibaba.com> References: <20230817082813.81180-1-hsiangkao@linux.alibaba.com> MIME-Version: 1.0 X-Spam-Status: No, score=-9.9 required=5.0 tests=BAYES_00, ENV_AND_HDR_SPF_MATCH,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS, UNPARSEABLE_RELAY,USER_IN_DEF_SPF_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1774477780279979375 X-GMAIL-MSGID: 1774477780279979375 It's a straight-forward conversion and no logic changes (except that it renames the corresponding tracepoint.) Signed-off-by: Gao Xiang --- erofs stress test passes. fs/erofs/zdata.c | 9 ++++----- include/trace/events/erofs.h | 16 ++++++++-------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/fs/erofs/zdata.c b/fs/erofs/zdata.c index 79cadb88e8bf..ace727bfe5b2 100644 --- a/fs/erofs/zdata.c +++ b/fs/erofs/zdata.c @@ -1821,17 +1821,16 @@ static void z_erofs_pcluster_readmore(struct z_erofs_decompress_frontend *f, static int z_erofs_read_folio(struct file *file, struct folio *folio) { - struct page *page = &folio->page; - struct inode *const inode = page->mapping->host; + struct inode *const inode = folio->mapping->host; struct erofs_sb_info *const sbi = EROFS_I_SB(inode); struct z_erofs_decompress_frontend f = DECOMPRESS_FRONTEND_INIT(inode); int err; - trace_erofs_readpage(page, false); - f.headoffset = (erofs_off_t)page->index << PAGE_SHIFT; + trace_erofs_read_folio(folio, false); + f.headoffset = (erofs_off_t)folio->index << folio_shift(folio); z_erofs_pcluster_readmore(&f, NULL, true); - err = z_erofs_do_read_page(&f, page); + err = z_erofs_do_read_page(&f, &folio->page); z_erofs_pcluster_readmore(&f, NULL, false); z_erofs_pcluster_end(&f); diff --git a/include/trace/events/erofs.h b/include/trace/events/erofs.h index 71dbe8bfa7db..e18684b02c3d 100644 --- a/include/trace/events/erofs.h +++ b/include/trace/events/erofs.h @@ -80,11 +80,11 @@ TRACE_EVENT(erofs_fill_inode, __entry->blkaddr, __entry->ofs) ); -TRACE_EVENT(erofs_readpage, +TRACE_EVENT(erofs_read_folio, - TP_PROTO(struct page *page, bool raw), + TP_PROTO(struct folio *folio, bool raw), - TP_ARGS(page, raw), + TP_ARGS(folio, raw), TP_STRUCT__entry( __field(dev_t, dev ) @@ -96,11 +96,11 @@ TRACE_EVENT(erofs_readpage, ), TP_fast_assign( - __entry->dev = page->mapping->host->i_sb->s_dev; - __entry->nid = EROFS_I(page->mapping->host)->nid; - __entry->dir = S_ISDIR(page->mapping->host->i_mode); - __entry->index = page->index; - __entry->uptodate = PageUptodate(page); + __entry->dev = folio->mapping->host->i_sb->s_dev; + __entry->nid = EROFS_I(folio->mapping->host)->nid; + __entry->dir = S_ISDIR(folio->mapping->host->i_mode); + __entry->index = folio->index; + __entry->uptodate = folio_test_uptodate(folio); __entry->raw = raw; ),