[PATCH v2 1/1] eal: update xz read support and ignore warning

David Marchand david.marchand at redhat.com
Tue Sep 26 15:56:59 CEST 2023


On Tue, Sep 26, 2023 at 3:30 PM Srikanth Yalavarthi
<syalavarthi at marvell.com> wrote:
>
> archive_read_support_filter_xz returns a warning when
> compression is not fully supported and is supported
> through external program. This warning can be ignored
> when reading the files through firmware open as only
> decompression is required.

Same comment as before, this sentence is confusing.
Compressing files does not matter in DPDK rte_firmware_ API.

The commit title and commitlog won't help people understand in which
case the issue is reproduced, and how this patch fixes it.

Suggesting the following title and commitlog:

"""
eal/unix: fix firmware reading with external xz support

libarchive may support xz decompression only through an external
(slower) helper.
In such a case, archive_read_support_filter_xz() returns ARCHIVE_WARN.

Fixes: 40edb9c0d36b ("eal: handle compressed firmware")
Cc: stable at dpdk.org
"""

>
> Fixes: 40edb9c0d36b ("eal: handle compressed firmware")
> Cc: stable at dpdk.org
>
> Signed-off-by: Srikanth Yalavarthi <syalavarthi at marvell.com>
> Change-Id: I38cce556ec637af03dbde74d7d18318af48082d6

This is internal scm stuff and must be dropped.

> ---
>  lib/eal/unix/eal_firmware.c | 28 ++++++++++++++++++++--------
>  1 file changed, 20 insertions(+), 8 deletions(-)
>
> diff --git a/lib/eal/unix/eal_firmware.c b/lib/eal/unix/eal_firmware.c
> index d1616b0bd9..16690b4245 100644
> --- a/lib/eal/unix/eal_firmware.c
> +++ b/lib/eal/unix/eal_firmware.c
> @@ -25,19 +25,31 @@ static int
>  firmware_open(struct firmware_read_ctx *ctx, const char *name, size_t blocksize)
>  {
>         struct archive_entry *e;
> +       int err;
>
>         ctx->a = archive_read_new();
>         if (ctx->a == NULL)
>                 return -1;
> -       if (archive_read_support_format_raw(ctx->a) != ARCHIVE_OK ||
> -                       archive_read_support_filter_xz(ctx->a) != ARCHIVE_OK ||
> -                       archive_read_open_filename(ctx->a, name, blocksize) != ARCHIVE_OK ||
> -                       archive_read_next_header(ctx->a, &e) != ARCHIVE_OK) {
> -               archive_read_free(ctx->a);
> -               ctx->a = NULL;
> -               return -1;
> -       }
> +
> +       if (archive_read_support_format_raw(ctx->a) != ARCHIVE_OK)
> +               goto error;
> +
> +       err = archive_read_support_filter_xz(ctx->a);
> +       if (err != ARCHIVE_OK && err != ARCHIVE_WARN)
> +               goto error;
> +
> +       if (archive_read_open_filename(ctx->a, name, blocksize) != ARCHIVE_OK)
> +               goto error;
> +
> +       if (archive_read_next_header(ctx->a, &e))

I did a typo when quickly writting the snippet previously.
It should be "archive_read_next_header(ctx->a, &e) != ARCHIVE_OK"


> +               goto error;
> +
>         return 0;
> +
> +error:
> +       archive_read_free(ctx->a);
> +       ctx->a = NULL;
> +       return -1;
>  }
>
>  static ssize_t
> --
> 2.41.0
>


-- 
David Marchand



More information about the stable mailing list