From: Artem Bityutskiy <dedekind1@gmail.com>
To: Romain Izard <romain.izard.pro@gmail.com>,
David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Cc: linux-mtd@lists.infradead.org
Subject: Re: [PATCH] mkfs.ubifs: Only require 17 LEBs
Date: Thu, 06 Jul 2017 09:46:43 +0300 [thread overview]
Message-ID: <1499323603.18035.44.camel@gmail.com> (raw)
In-Reply-To: <20170705163411.23546-1-romain.izard.pro@gmail.com>
If this change is done in userspace, it should also be done in the
kernel, which also can "format" the media.
I cannot remember now, but very small volumes were very problematic.
May be it was very inprecise free space estimation. Or something like
-ENOSPC when trying to remove a file.
The point is, make sure to test the tiny volumes very thoroughly before
this is merged.
On Wed, 2017-07-05 at 18:34 +0200, Romain Izard wrote:
> The minimum size for a UBIFS volume is 17 LEBs. As mkfs.ubifs counted
> the reserved log and orphan blocks twice, the program did not allow
> such a small volume.
>
> Fix the calculations to be able to build an image with 17 LEBs. With
> this, the following command works:
>
> mkfs.ubifs -c 17 -l2 -m 2048 -e 124KiB -o small.ubifs
>
> Signed-off-by: Romain Izard <romain.izard.pro@gmail.com>
> ---
> ubifs-utils/mkfs.ubifs/mkfs.ubifs.c | 11 +++++++----
> 1 file changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c b/ubifs-
> utils/mkfs.ubifs/mkfs.ubifs.c
> index 9e69a4f..ba0293c 100644
> --- a/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c
> +++ b/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c
> @@ -331,6 +331,9 @@ static long long add_space_overhead(long long
> size)
> return size / divisor;
> }
>
> +#define UBIFS_MIN_LEB_NOLOG (UBIFS_MIN_LEB_CNT -
> UBIFS_MIN_LOG_LEBS)
> +#define UBIFS_MIN_LEB_NOORPH (UBIFS_MIN_LEB_CNT -
> UBIFS_MIN_ORPH_LEBS)
> +
> static int validate_options(void)
> {
> int tmp;
> @@ -372,15 +375,15 @@ static int validate_options(void)
> if (c->log_lebs < UBIFS_MIN_LOG_LEBS)
> return err_msg("too few log LEBs, minimum is %d",
> UBIFS_MIN_LOG_LEBS);
> - if (c->log_lebs >= c->max_leb_cnt - UBIFS_MIN_LEB_CNT)
> + if (c->log_lebs > c->max_leb_cnt - UBIFS_MIN_LEB_NOLOG)
> return err_msg("too many log LEBs, maximum is %d",
> - c->max_leb_cnt - UBIFS_MIN_LEB_CNT);
> + c->max_leb_cnt -
> UBIFS_MIN_LEB_NOLOG);
> if (c->orph_lebs < UBIFS_MIN_ORPH_LEBS)
> return err_msg("too few orphan LEBs, minimum is %d",
> UBIFS_MIN_ORPH_LEBS);
> - if (c->orph_lebs >= c->max_leb_cnt - UBIFS_MIN_LEB_CNT)
> + if (c->orph_lebs > c->max_leb_cnt - UBIFS_MIN_LEB_NOORPH)
> return err_msg("too many orphan LEBs, maximum is
> %d",
> - c->max_leb_cnt - UBIFS_MIN_LEB_CNT);
> + c->max_leb_cnt -
> UBIFS_MIN_LEB_NOORPH);
> tmp = UBIFS_SB_LEBS + UBIFS_MST_LEBS + c->log_lebs + c-
> >lpt_lebs;
> tmp += c->orph_lebs + 4;
> if (tmp > c->max_leb_cnt)
next prev parent reply other threads:[~2017-07-06 6:47 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-05 16:34 [PATCH] mkfs.ubifs: Only require 17 LEBs Romain Izard
2017-07-06 6:46 ` Artem Bityutskiy [this message]
2017-07-06 7:57 ` Romain Izard
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=1499323603.18035.44.camel@gmail.com \
--to=dedekind1@gmail.com \
--cc=david.oberhollenzer@sigma-star.at \
--cc=linux-mtd@lists.infradead.org \
--cc=romain.izard.pro@gmail.com \
/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.