summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2017-03-24 08:15:52 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2017-03-31 18:43:53 +0200
commit1f386378a7b8173220648afeab41605ac7742364 (patch)
treecac4aac49c385e07edf42456d7a98966e5654ecf
parentb5eeaea7c9591a5e7406bbdf5578d29d62149f38 (diff)
downloadbarebox-1f386378a7b8173220648afeab41605ac7742364.tar.gz
barebox-1f386378a7b8173220648afeab41605ac7742364.tar.xz
state: backend_circular: default to circular storage
Default to the new circular storage format which saves erase cycles. The old format can still be selected with backend-storage-type = "noncircular". Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--Documentation/devicetree/bindings/barebox/barebox,state.rst6
-rw-r--r--common/state/backend_storage.c14
2 files changed, 11 insertions, 9 deletions
diff --git a/Documentation/devicetree/bindings/barebox/barebox,state.rst b/Documentation/devicetree/bindings/barebox/barebox,state.rst
index e9daa65f1a..00fb592614 100644
--- a/Documentation/devicetree/bindings/barebox/barebox,state.rst
+++ b/Documentation/devicetree/bindings/barebox/barebox,state.rst
@@ -40,9 +40,9 @@ Optional properties:
e.g. ``hmac(sha256)``. Only used for ``raw``.
* ``backend-stridesize``: Maximum size per copy of the data. Only important for
non-MTD devices
-* ``backend-storage-type``: Type of the storage. This has two options at the
- moment. For MTD with erasing the correct type is ``circular``. For all other
- devices and files, ``direct`` is the needed type.
+* ``backend-storage-type``: Normally the correct storage type is detected auto-
+ matically. The circular backend supports the option ``noncircular`` to fall
+ back to an old storage format.
Variable nodes
--------------
diff --git a/common/state/backend_storage.c b/common/state/backend_storage.c
index f9e8151670..036204c188 100644
--- a/common/state/backend_storage.c
+++ b/common/state/backend_storage.c
@@ -376,13 +376,15 @@ int state_storage_init(struct state *state, const char *path,
ret = mtd_get_meminfo(path, &meminfo);
if (!ret && !(meminfo.flags & MTD_NO_ERASE)) {
- bool circular = true;
- if (!storagetype) {
- circular = false;
- } else if (strcmp(storagetype, "circular")) {
- dev_warn(storage->dev, "Unknown storagetype '%s', falling back to old format circular storage type.\n",
- storagetype);
+ bool circular;
+ if (!storagetype || !strcmp(storagetype, "circular")) {
+ circular = true;
+ } else if (!strcmp(storagetype, "noncircular")) {
+ dev_warn(storage->dev, "using old format circular storage type.\n");
circular = false;
+ } else {
+ dev_warn(storage->dev, "unknown storage type '%s'\n", storagetype);
+ return -EINVAL;
}
return state_storage_mtd_buckets_init(storage, &meminfo, circular);
} else {