[PATCHv4 0/5] FWU: Handle meta-data in common code
Tom Rini
trini at konsulko.com
Tue Feb 21 21:08:39 CET 2023
On Sat, Feb 04, 2023 at 09:00:56PM -0600, jassisinghbrar at gmail.com wrote:
> From: Jassi Brar <jaswinder.singh at linaro.org>
>
> The patchset reduces ~400 lines of code, while keeping the functionality same and making
> meta-data operations much faster (by using cached structures).
>
> Issue:
> meta-data copies (primary and secondary) are being handled by the backend/storage layer
> instead of the common core in fwu.c (as also noted by Ilias) that is, gpt_blk.c manages
> meta-data and similarly raw_mtd.c will have to do the same when it arrives. The code
> could by make smaller, cleaner and optimised.
>
> Basic idea:
> Introduce .read_mdata() and .write_mdata() in fwu_mdata_ops that simply read/write
> meta-data copy. The core code takes care of integrity and redundancy of the meta-data,
> as a result we can get rid of every other callback .get_mdata() .update_mdata()
> .get_mdata_part_num() .read_mdata_partition() .write_mdata_partition() and the
> corresponding wrapper functions thereby making the code 100s of LOC smaller.
>
> Get rid of fwu_check_mdata_validity() and fwu_mdata_check() which expected underlying
> layer to manage and verify mdata copies.
> Implement fwu_get_verified_mdata(struct fwu_mdata *mdata) public function that reads,
> verifies and, if needed, fixes the meta-data copies.
>
> Verified copy of meta-data is now cached as 'g_mdata' in fwu.c, which avoids multiple
> low-level expensive read and parse calls.
> gpt meta-data partition numbers are now cached in gpt_blk.c, so that we don't have to do expensive part_get_info() and uid ops.
>
> Changes since v3:
> * Fix error log wording
> * call fwu_write_mdata() with part & PRIMARY_PART ? true: false
>
> Changes since v2:
> * Drop whitespace changes
> * Fix missing mdata copy before return
>
> Changes since v1:
> * Fix typos and misc cosmetic changes
> * Catch error returns
>
>
> Jassi Brar (5):
> fwu: gpt: use cached meta-data partition numbers
> fwu: move meta-data management in core
> fwu: gpt: implement read_mdata and write_mdata callbacks
> fwu: meta-data: switch to management by common code
> fwu: rename fwu_get_verified_mdata to fwu_get_mdata
>
> cmd/fwu_mdata.c | 17 +-
> drivers/fwu-mdata/fwu-mdata-uclass.c | 151 +-------------
> drivers/fwu-mdata/gpt_blk.c | 175 +++++-----------
> include/fwu.h | 198 ++----------------
> lib/fwu_updates/fwu.c | 294 +++++++++++----------------
> 5 files changed, 207 insertions(+), 628 deletions(-)
FWIW, aside from the failure I reported, everything else seems fine.
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20230221/3b256785/attachment.sig>
More information about the U-Boot
mailing list