Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp3250139pxf; Sun, 28 Mar 2021 18:25:02 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzMDA6pTVoXhuQAuhkL/2dqoAiy00xmWRmbuzoskrNQPZiLV2X+EqH38SlzcCrvFDqgQrJr X-Received: by 2002:a17:906:fa0e:: with SMTP id lo14mr26003450ejb.263.1616981102013; Sun, 28 Mar 2021 18:25:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1616981102; cv=none; d=google.com; s=arc-20160816; b=PFFS5VdP57pdsOlr0BVqmziYa9uUk7Q1X4UzuyoMaaQbZ9UifQxe0cVQlouBhCmBAR HqwDLvKybFoTznpLRuAw1u3lUWnFhBX/ZyHF5YnjVR/kC4MYTO931NRihBn8TfoewKYB jSdHqAEfBnEGQbTrbndrkigN8risdHL7gYft9jDdd4PlBmAP06Ld4LRPQ9iaggJ5rrv2 veQL0xViQNca0kpwFgaM7GDcC6o2S6Lj+ENu4VLUmmcwk8v9JYCw9kFXyINCYJSUenkn 1U+ZF/wraRGNkprBkNzjItXP8bqhv4VLdemMLOZBaW/bQj2fBvrrA63GsFbaJqGHYEMp wy6g== 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 :dkim-signature; bh=t/+ISJ5HXrAlKiul3xBwkVe65r9B8sYHMwSlqDyWszE=; b=YBSnxQVgG52dO5G+tU31Q3RcxHs8oHpcqNRNmQh89HHIgmlZXcQun/fuWJ/ss32BLB 5varZ/L6EQt85O71ZRocpfV5Pgse+3JyiIP+vI6lVHItFiGxlKahg66+znTRMu6zEGkt R9deILZTIMpvYuDBkQeD74vjYpHOsa1acBKAiLBjBoUlc1FeNCp9YqSjH07CLDUWVB2o ALNS0FwnKDwPN2stAV5FtNOkHtID2tujfVsg313qdLTaju0fGesy8jWBCKOWIBq7TAtz 7qRdYeCZV6+hJG+GeplnGmIOinvE8+nxbdbL5LdUOLpKqodt5/oHnTrIEmZ8xADsktvu JSyw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@aol.com header.s=a2048 header.b=c0pCPJol; 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=REJECT sp=REJECT dis=NONE) header.from=aol.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id cf5si11584881ejb.346.2021.03.28.18.24.39; Sun, 28 Mar 2021 18:25:02 -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=@aol.com header.s=a2048 header.b=c0pCPJol; 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=REJECT sp=REJECT dis=NONE) header.from=aol.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231679AbhC2BXi (ORCPT + 99 others); Sun, 28 Mar 2021 21:23:38 -0400 Received: from sonic313-21.consmr.mail.gq1.yahoo.com ([98.137.65.84]:40861 "EHLO sonic313-21.consmr.mail.gq1.yahoo.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230470AbhC2BX2 (ORCPT ); Sun, 28 Mar 2021 21:23:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aol.com; s=a2048; t=1616981008; bh=t/+ISJ5HXrAlKiul3xBwkVe65r9B8sYHMwSlqDyWszE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From:Subject:Reply-To; b=c0pCPJolOFW7rXGQGr1qmjWyxsz0H4cnwEl6tileaOfLdcpgU4+opOholYDEj/Cr3iteF/ObB8Zr8il0ARFPV/G0y9SbGIfCnGrBBPfxLWoDJiE5CPU6eR6Zy7fgMdnmSM6GIYKI/fc6URegMipGXsNrO/0TVBDNurjpkcVW81XSiUJUJ5bByqXZfwAFgh4jZ/M8kItyMIb0wkxq+AIB8qQdd5pxjS9QWeHrIVCevVzUeQHJwvIjxvbLZ3f40pzLSOXYruJfDc9/zhD3A/1miCNAlOjM7ovh2vm6pQA03XVYx20S0Qexw2K/fqgxzgDIrc1pve1hjbThGBiPBGtH1g== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1616981008; bh=/I/6RPssPwK9kvIcYTQVylBSMn2DILL9DVGytGfKZ7x=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=X4gcHHqfTlWZefB+s1xvhoI9C4RxcjYtg0053o1k/+Fjs/PPsDUPzba8iEyVAkyrEI9H5rbFT54RjbJLaDhZxSpecmVOaIMjGSO2TQfd5aanhaieqaMlDv9g+cfbGbDq9NXPrPyy5HZGjtPtgC6YAJxw0m1jqv2NFByNbuMeIu3TpIAaPFkVFtxohk2B4EPkUhtxZOwmJDtDQNgi4y3k1WLkfAAf9DUOqj9+3AUN42v/0p+SMY67GIcX+d3cstkGOH/ZXIO/aOpOa9UaFM/d75RrhetWwW5v7yWSRdBl9Y5JI80eEQhvabm7+Vvx9ns7brqH2OeSEpsZggJ1KMxv5g== X-YMail-OSG: mn2SRiwVM1m3IIvxGE4awjm3jmVC9P5H6N_yYu7Q9ZOVSE9IhRm_2h1TLJPX11O Cw.hB0GKXZ3BnJYsojKM9PJR5k4FBHzhb2_OZ8J_4xIWO_5oo_91_6JcjXhf1jYyQEi5ZQzKW7u0 PIFpodwcjEtE1FZQslhb_04RT8I3B_UZD5kWRcp0R9ZEsTE2KVqdCTIzStB_dU4vyLm7muGbERrH Di2NEax6XX.nRTI..F5B93qx6DVr7NMlKSgKhjbn2tut09_NCAkr4VOPCq2QwmMczQtJDJoHA8mw 8ndUJnYArA7OhEErI5mQUizfWOyZOb.iJ_WK7EncyL1enAF9kfccP9yrLh8rtVz2JJHcKvcRy31W 5OMlMvm2tVQ0Pl92JinB8Ex2C6fNLT3IKIq0a6qtznR14iUL95bx5fg_iAQWvRFPPmQtclCr5GF1 vWHHd.nCTyon_XL3MqDZPFKrNB67CYlms9MR.ijTmvNCqkqu25Ll4NjJy4f.ybxLr60lzRhFXAao dT.QXXxenEwxRqT2s9P1RvFx6UYdbBnPWgXkpLiVEzNomkJBdiSM5lmSI6HBiZVcHmNPFQiuxx2V 6bwjDwhXJl2Dbc7phSAnNHySq4Wy7qQhITRrEiXTr.5SanL6xfqzQNLCAE9Dx0roADrryidS.Thm v1IVtEBdgnEs0lkWbCvX3AXIZWbPYJsXhmCNsQSB5A6KFvjrntCAwHmQA8nfHvHd5zw52J4vU05Z NBcOnh1NsuHZNerHVQ8.6mNksXLbFCpeimazJ.1CBNNLW.ZhdpI9oULA57DZQJENjM.ptoJE5j3e JT9aFiADQ8FkKMpqDoP5TgwODTgz_f1yvQ.RxI2o4.z3SrH2phWZChTK9qKjgNg8dfXb9EkQUuZ3 HAoSp9.W6zuSlLuLH.xreZoS68zuyu6YZ_n320ajnrfHaMm1fm2ee3zRzSKtNoGqbns.2advodYe z2jL8TnvRoLE8bMOGYCvy5f.8T6MbiAAXcM725OQQtO6Gn7Qel.i7EOD_nsIhpDQJ4_yeP13Y2bH QoLSwsPi42ZC_bUrw283tsMcQnLY62LRVia4QpZypdQUwacwdc7nM4cpMGuA2c7_1xbjZLsKVpIs HJk1mwWt4WDx5htXTwgI_ENWIzx78Qwv1svd3D3Exelc8Om6sLNby3Bbwb6wiP_ObpCZVC5CZA3O K_HPceicUzNIrapD140hQHbnqhxq07wOScR2TGNspkFDXz3FMuIJoFogYoHQiNhhaMpg2j0_L_4i VNAEYxgjAexN_Zld_l.A3xB6w2gv5YbYXNDPpOAT.KuRnwezCMhpNUEft.5NGQdIQn.0QvbGxRF_ 6YpuW5JMxn26tN5nt84oaHU6RlFi2WiLWtRfwA45VDIUzzMadBlh5fNKRvUOYlOb2J_8NCIIoZIY 5jH06_VV4tkTi31DhxyOCD1ve8NNkmeGsesialSicJdPjEpXopqAWKHJBNvsCiRe6CU.9eVaMGRh slVoi6ySq7cs9Jbmhbz7k7NzEnIgJg2HMjWWxp0QE.PELFwNQwL7E_jt4jL_V0Hc9gLYu_tL8dGL 37ftPTJ60uZWM5oiSPoR48IWfFjyfnWaydhHplo1turnv2Pitx9ywyTJo_ho0B6fiGRtW99cbudg PotBRNrjIRrIIF5xWQRiW2KkMYYF8TSx2RdXTGQ5mfcdfzV1UfPs5Fyfsv_aQ3A4lVt_M1Bz4p93 Abp7Qpjz_uOYOlKRmReiCodxSI_r.n26V2VGZu1qmGlQ8CfEFgliRiH8mC965TYgr8eTRMc31nAH 4tlkv6JsaIbW5omI7h9pQLRbe0g2yChMYf1QDXl0mKJvSzsAALSm50OwsnCOyXrkOLy.ljeMnFB6 SUxYKX6ITZ2gf7TfhqxYIlTiBrLUhi2CweNs14ukKRistGHsctLVSBVGFWLBTdhXSYM4gimsSwwU Pu1IjN3MJNpwyhWhsZ3bP.AicBeoCAwnS3rCBp0KYwLa7W_C3MygIJ1PKP8SDG.Bdv0KwlQYwiui ljLARn0jsuAQXLP5N9NWtnMfXC9JLxSKjYkA6xacXsIWywWZnoLJvh3bBlWwIiaBp.oNmw0uJkJu aFmkJ10MbZYsLylQ7fZ.5wynPPR98BDgWcd3VKoLkVCgvcrZilVDQOL.Bnxl42q6JRapJ5ml9OmX RhbjKZQ6BXLt14PoCvp4KdSJppJe35YYFZ4RpH42YlJjKUhP6kEqvRMaTiC_cWqm81x7TMhCVmee 7PSKYVqg0wkgie_h39z5hffVh5BubJBsKxZh56ozkxiAfpd.kwlneIA.w7uebi7nLaPPUwmzioR9 a28QODDj0sl1TDmr7gi_10exTOZxu1GkUKqhgsQETTcxHISNeN5bwbeNhSaQLUcb_8tuTqhdDaCP 2bt4hqk7RcHbdhrD.7yhgI74BBL9HpPgqEmB2kIBLL3SdGRyr6geJSvS4YXrP3QgLGMuKRxASnei Nl2iwfWlSXTFTeOmcO4R1DOSta72me8lOsgQUS5jcdNIBYRszun69wV7QqWGiCserhavQ2ERCzE_ jGHv4FBZJbDyngn9xGF.xFWmY5gEA7qI_d1IlZ3uM9UYJRNgY8SBVQTMxyBfRLKBeWMYgBikchw9 bh8e_pksrElPmiUSv_Up_GBV.QLSRDWl.oa90CwaqM4gr.wAU2Ru0dbNVGoX7S47D6f7fayP7XD7 5BDGmILxffXTYe.WrU1S0OYE- X-Sonic-MF: Received: from sonic.gate.mail.ne1.yahoo.com by sonic313.consmr.mail.gq1.yahoo.com with HTTP; Mon, 29 Mar 2021 01:23:28 +0000 Received: by kubenode575.mail-prod1.omega.gq1.yahoo.com (VZM Hermes SMTP Server) with ESMTPA ID 3d9d64f8790c67205a0f6cb47abdabe6; Mon, 29 Mar 2021 01:23:26 +0000 (UTC) From: Gao Xiang To: linux-erofs@lists.ozlabs.org, Chao Yu , Chao Yu Cc: LKML , Gao Xiang Subject: [PATCH v2 3/4] erofs: introduce on-disk lz4 fs configurations Date: Mon, 29 Mar 2021 09:23:07 +0800 Message-Id: <20210329012308.28743-4-hsiangkao@aol.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210329012308.28743-1-hsiangkao@aol.com> References: <20210329012308.28743-1-hsiangkao@aol.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Length: 3359 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Gao Xiang Introduce z_erofs_lz4_cfgs to store all lz4 configurations. Currently it's only max_distance, but will be used for new features later. Reviewed-by: Chao Yu Signed-off-by: Gao Xiang --- fs/erofs/decompressor.c | 15 +++++++++++++-- fs/erofs/erofs_fs.h | 6 ++++++ fs/erofs/internal.h | 8 +++++--- fs/erofs/super.c | 2 +- 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/fs/erofs/decompressor.c b/fs/erofs/decompressor.c index 93411e9df9b6..97538ff24a19 100644 --- a/fs/erofs/decompressor.c +++ b/fs/erofs/decompressor.c @@ -29,9 +29,20 @@ struct z_erofs_decompressor { }; int z_erofs_load_lz4_config(struct super_block *sb, - struct erofs_super_block *dsb) + struct erofs_super_block *dsb, + struct z_erofs_lz4_cfgs *lz4, int size) { - u16 distance = le16_to_cpu(dsb->lz4_max_distance); + u16 distance; + + if (lz4) { + if (size < sizeof(struct z_erofs_lz4_cfgs)) { + erofs_err(sb, "invalid lz4 cfgs, size=%u", size); + return -EINVAL; + } + distance = le16_to_cpu(lz4->max_distance); + } else { + distance = le16_to_cpu(dsb->lz4_max_distance); + } EROFS_SB(sb)->lz4.max_distance_pages = distance ? DIV_ROUND_UP(distance, PAGE_SIZE) + 1 : diff --git a/fs/erofs/erofs_fs.h b/fs/erofs/erofs_fs.h index 43467624ae3b..e0f3c0db1f82 100644 --- a/fs/erofs/erofs_fs.h +++ b/fs/erofs/erofs_fs.h @@ -197,6 +197,12 @@ enum { Z_EROFS_COMPRESSION_MAX }; +/* 14 bytes (+ length field = 16 bytes) */ +struct z_erofs_lz4_cfgs { + __le16 max_distance; + u8 reserved[12]; +} __packed; + /* * bit 0 : COMPACTED_2B indexes (0 - off; 1 - on) * e.g. for 4k logical cluster size, 4B if compacted 2B is off; diff --git a/fs/erofs/internal.h b/fs/erofs/internal.h index 1de60992c3dd..46b977f348eb 100644 --- a/fs/erofs/internal.h +++ b/fs/erofs/internal.h @@ -441,7 +441,8 @@ int erofs_try_to_free_all_cached_pages(struct erofs_sb_info *sbi, int erofs_try_to_free_cached_page(struct address_space *mapping, struct page *page); int z_erofs_load_lz4_config(struct super_block *sb, - struct erofs_super_block *dsb); + struct erofs_super_block *dsb, + struct z_erofs_lz4_cfgs *lz4, int len); #else static inline void erofs_shrinker_register(struct super_block *sb) {} static inline void erofs_shrinker_unregister(struct super_block *sb) {} @@ -450,9 +451,10 @@ static inline void erofs_exit_shrinker(void) {} static inline int z_erofs_init_zip_subsystem(void) { return 0; } static inline void z_erofs_exit_zip_subsystem(void) {} static inline int z_erofs_load_lz4_config(struct super_block *sb, - struct erofs_super_block *dsb) + struct erofs_super_block *dsb, + struct z_erofs_lz4_cfgs *lz4, int len) { - if (dsb->lz4_max_distance) { + if (lz4 || dsb->lz4_max_distance) { erofs_err(sb, "lz4 algorithm isn't enabled"); return -EINVAL; } diff --git a/fs/erofs/super.c b/fs/erofs/super.c index 3212e4f73f85..1ca8da3f2125 100644 --- a/fs/erofs/super.c +++ b/fs/erofs/super.c @@ -189,7 +189,7 @@ static int erofs_read_superblock(struct super_block *sb) } /* parse on-disk compression configurations */ - ret = z_erofs_load_lz4_config(sb, dsb); + ret = z_erofs_load_lz4_config(sb, dsb, NULL, 0); out: kunmap(page); put_page(page); -- 2.20.1