From: Stefan Roese <sr@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 3/3] ubi: Add "skipcheck" command to set/clear this bit in the UBI volume hdr
Date: Thu, 12 Sep 2019 16:41:03 +0200 [thread overview]
Message-ID: <20190912144103.17261-3-sr@denx.de> (raw)
In-Reply-To: <20190912144103.17261-1-sr@denx.de>
U-Boot now supports the "skip_check" flag to optionally skip the CRC
check at open time. Currently its only possible to set this bit upon
UBI volume creation. But it might be very useful to also set this bit
on already installed systems (e.g. field upgrade) to make also use of
the boot-time decrease on those systems.
This patch now adds a new "ubi" command "ubi skipcheck" to set or clear
this bit in the UBI volume header:
=> ubi skipcheck rootfs0 on
Setting skip_check on volume rootfs0
BTW: This saves approx. 10 seconds Linux bootup time on a MT7688 based
target with 128MiB of SPI NAND.
Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Quentin Schulz <quentin.schulz@bootlin.com>
Cc: Boris Brezillon <boris.brezillon@bootlin.com>
Cc: Heiko Schocher <hs@denx.de>
---
cmd/ubi.c | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)
diff --git a/cmd/ubi.c b/cmd/ubi.c
index c857f07d93..42b5641b32 100644
--- a/cmd/ubi.c
+++ b/cmd/ubi.c
@@ -419,6 +419,30 @@ static int ubi_dev_scan(struct mtd_info *info, const char *vid_header_offset)
return 0;
}
+static int ubi_set_skip_check(char *volume, bool skip_check)
+{
+ struct ubi_vtbl_record vtbl_rec;
+ struct ubi_volume *vol;
+
+ vol = ubi_find_volume(volume);
+ if (vol == NULL)
+ return ENODEV;
+
+ printf("%sing skip_check on volume %s\n",
+ skip_check ? "Sett" : "Clear", volume);
+
+ vtbl_rec = ubi->vtbl[vol->vol_id];
+ if (skip_check) {
+ vtbl_rec.flags |= UBI_VTBL_SKIP_CRC_CHECK_FLG;
+ vol->skip_check = 1;
+ } else {
+ vtbl_rec.flags &= ~UBI_VTBL_SKIP_CRC_CHECK_FLG;
+ vol->skip_check = 0;
+ }
+
+ return ubi_change_vtbl_record(ubi, vol->vol_id, &vtbl_rec);
+}
+
static int ubi_detach(void)
{
#ifdef CONFIG_CMD_UBIFS
@@ -578,6 +602,14 @@ static int do_ubi(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
return ubi_remove_vol(argv[2]);
}
+ if (strncmp(argv[1], "skipcheck", 9) == 0) {
+ /* E.g., change skip_check flag */
+ if (argc == 4) {
+ skipcheck = strncmp(argv[3], "on", 2) == 0;
+ return ubi_set_skip_check(argv[2], skipcheck);
+ }
+ }
+
if (strncmp(argv[1], "write", 5) == 0) {
int ret;
@@ -658,6 +690,8 @@ U_BOOT_CMD(
" - Read volume to address with size\n"
"ubi remove[vol] volume"
" - Remove volume\n"
+ "ubi skipcheck volume on/off"
+ " - Set or clear skip_check flag in volume header\n"
"[Legends]\n"
" volume: character name\n"
" size: specified in bytes\n"
--
2.23.0
next prev parent reply other threads:[~2019-09-12 14:41 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-12 14:41 [U-Boot] [PATCH 1/3] ubi: provide a way to skip CRC checks Stefan Roese
2019-09-12 14:41 ` [U-Boot] [PATCH 2/3] ubi: Print skip_check in ubi_dump_vol_info() Stefan Roese
2019-09-17 5:39 ` Heiko Schocher
2019-10-16 8:59 ` Heiko Schocher
2019-09-12 14:41 ` Stefan Roese [this message]
2019-09-13 21:11 ` [U-Boot] [PATCH 3/3] ubi: Add "skipcheck" command to set/clear this bit in the UBI volume hdr Andreas Dannenberg
2019-09-17 5:45 ` Heiko Schocher
2019-09-17 5:54 ` Stefan Roese
2019-09-17 5:37 ` [U-Boot] [PATCH 1/3] ubi: provide a way to skip CRC checks Heiko Schocher
2019-10-16 8:59 ` Heiko Schocher
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=20190912144103.17261-3-sr@denx.de \
--to=sr@denx.de \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox