From: Miquel Raynal <miquel.raynal@bootlin.com>
To: u-boot@lists.denx.de
Subject: [RFC PATCH v2 1/1] Fix missing __udivdi3 in SquashFS implementation.
Date: Thu, 1 Oct 2020 09:59:43 +0200 [thread overview]
Message-ID: <20201001095943.3e73cbd9@xps13> (raw)
In-Reply-To: <20201001092841.55b93d5c@windsurf.home>
Hello,
Thomas Petazzoni <thomas.petazzoni@bootlin.com> wrote on Thu, 1 Oct
2020 09:28:41 +0200:
> Hello,
>
> On Wed, 30 Sep 2020 17:45:11 +0200
> Mauro Condarelli <mc5686@mclink.it> wrote:
>
> > Use right shift to avoid 64-bit divisions.
> >
> > These divisions are needed to convert from file length (potentially
> > over 32-bit range) to block number, so result and remainder are
> > guaranteed to fit in 32-bit integers.
> >
> > Signed-off-by: Mauro Condarelli <mc5686@mclink.it>
>
> Perhaps the commit log should contain an example U-Boot
> configuration/platform where it fails to build. Indeed, we did test the
> SquashFS code on ARM 32-bit, and it built and worked fine.
>
> > ---
> >
> > Changes in v2:
> > - replace division with right shift (Daniel Schwierzeck).
> > - remove vocore2-specific change (Daniel Schwierzeck).
> > - add warning to Kconfig about CONFIG_SYS_MALLOC_LEN (Tom Rini).
> >
> > fs/squashfs/Kconfig | 2 ++
> > fs/squashfs/sqfs.c | 30 +++++++++++++++---------------
> > fs/squashfs/sqfs_inode.c | 6 +++---
> > 3 files changed, 20 insertions(+), 18 deletions(-)
> >
> > diff --git a/fs/squashfs/Kconfig b/fs/squashfs/Kconfig
> > index 54ab1618f1..7c3f83d007 100644
> > --- a/fs/squashfs/Kconfig
> > +++ b/fs/squashfs/Kconfig
> > @@ -9,3 +9,5 @@ config FS_SQUASHFS
> > filesystem use, for archival use (i.e. in cases where a .tar.gz file
> > may be used), and in constrained block device/memory systems (e.g.
> > embedded systems) where low overhead is needed.
> > + WARNING: if compression is enabled SquashFS needs a large amount
> > + of dynamic memory; make sure CONFIG_SYS_MALLOC_LEN >= 0x4000.
>
> This change is completely unrelated, and should be in a separate patch.
I was about to tell you the same thing, this warning is useful but
should definitely lay into its own commit.
> > - n_blks = DIV_ROUND_UP(table_size + table_offset,
> > - ctxt.cur_dev->blksz);
> > + n_blks = (table_size + table_offset + ctxt.cur_dev->blksz - 1) >>
> > + ctxt.cur_dev->log2blksz;
>
> I understand why you have to add blksz - 1 before doing the shift, but
> I find that it's overall a lot less readable/clear. Is there a way to
> do better ?
>
> We could use DIV_ROUND_UP_ULL() I guess.
>
>
> > else
> > - blk_list_size = file_size / blk_size;
> > + blk_list_size = file_size > LOG2(blk_size);
>
> Very bad mistake here: > should be >>.
I personally highly dislike replacing divisions into shifts. I think
it's too much effort when trying to understand code you did not write
yourself. Is it possible to use something like do_div? plus, you can
check the remainder to be 0 in this case.
Thanks,
Miqu?l
next prev parent reply other threads:[~2020-10-01 7:59 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-30 15:45 [RFC PATCH v2 0/1] Current strategy is to use right/left shift to implement div/mult Mauro Condarelli
2020-09-30 15:45 ` [RFC PATCH v2 1/1] Fix missing __udivdi3 in SquashFS implementation Mauro Condarelli
2020-09-30 21:40 ` Daniel Schwierzeck
2020-10-01 7:28 ` Thomas Petazzoni
2020-10-01 7:59 ` Miquel Raynal [this message]
2020-10-01 8:41 ` Mauro Condarelli
2020-10-01 8:53 ` Mauro Condarelli
2020-10-01 8:56 ` Miquel Raynal
2020-10-01 10:17 ` Mauro Condarelli
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20201001095943.3e73cbd9@xps13 \
--to=miquel.raynal@bootlin.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.