[PATCH 3/3] discover: Add disable param for dm-snapshots
Samuel Mendoza-Jonas
sam.mj at au1.ibm.com
Mon Aug 17 17:12:19 AEST 2015
Add a debug-style nvram parameter to disallow the use of device-mapper
snapshots.
Signed-off-by: Samuel Mendoza-Jonas <sam.mj at au1.ibm.com>
---
discover/devmapper.c | 4 ++++
discover/platform-powerpc.c | 5 +++++
discover/platform.c | 4 ++++
lib/types/types.h | 1 +
utils/pb-config.c | 2 ++
5 files changed, 16 insertions(+)
diff --git a/discover/devmapper.c b/discover/devmapper.c
index 1fd1215..e2ef0b5 100644
--- a/discover/devmapper.c
+++ b/discover/devmapper.c
@@ -6,6 +6,7 @@
#include "libdevmapper.h"
#include "devmapper.h"
+#include "platform.h"
#define MERGE_INTERVAL_US 200000
@@ -320,6 +321,9 @@ int devmapper_init_snapshot(struct device_handler *handler,
{
struct ramdisk_device *ramdisk;
+ if (config_get()->disable_snapshots)
+ return 0;
+
ramdisk = device_handler_get_ramdisk(handler);
if (!ramdisk) {
pb_log("No ramdisk available for snapshot %s\n",
diff --git a/discover/platform-powerpc.c b/discover/platform-powerpc.c
index fc96305..d45cced 100644
--- a/discover/platform-powerpc.c
+++ b/discover/platform-powerpc.c
@@ -54,6 +54,7 @@ static const char *known_params[] = {
"petitboot,language",
"petitboot,debug?",
"petitboot,write?",
+ "petitboot,snapshots?",
NULL,
};
@@ -553,6 +554,10 @@ static void populate_config(struct platform_powerpc *platform,
val = get_param(platform, "petitboot,write?");
if (val)
config->allow_writes = !strcmp(val, "true");
+
+ val = get_param(platform, "petitboot,snapshots?");
+ if (val)
+ config->disable_snapshots = !strcmp(val, "false");
}
static char *iface_config_str(void *ctx, struct interface_config *config)
diff --git a/discover/platform.c b/discover/platform.c
index b1d0f19..a6bd74c 100644
--- a/discover/platform.c
+++ b/discover/platform.c
@@ -35,6 +35,9 @@ static void dump_config(struct config *config)
if (config->safe_mode)
pb_log(" safe mode: active\n");
+ if (config->disable_snapshots)
+ pb_log(" dm-snapshots disabled\n");
+
for (i = 0; i < config->network.n_interfaces; i++) {
struct interface_config *ifconf =
config->network.interfaces[i];
@@ -109,6 +112,7 @@ void config_set_defaults(struct config *config)
config->safe_mode = false;
config->lang = NULL;
config->allow_writes = true;
+ config->disable_snapshots = false;
config->n_autoboot_opts = 2;
config->autoboot_opts = talloc_array(config, struct autoboot_option,
diff --git a/lib/types/types.h b/lib/types/types.h
index f7e4752..0415206 100644
--- a/lib/types/types.h
+++ b/lib/types/types.h
@@ -151,6 +151,7 @@ struct config {
char *lang;
/* not user-settable */
+ bool disable_snapshots;
bool safe_mode;
bool debug;
};
diff --git a/utils/pb-config.c b/utils/pb-config.c
index 009bec7..c52180b 100644
--- a/utils/pb-config.c
+++ b/utils/pb-config.c
@@ -79,6 +79,8 @@ static void print_config(void *ctx, struct config *config, const char *var)
config->safe_mode ? "enabled" : "disabled");
print_one_config(ctx, var, "debug", "%s",
config->debug ? "enabled" : "disabled");
+ print_one_config(ctx, var, "dm-snapshots", "%s",
+ config->disable_snapshots ? "disabled" : "enabled");
}
int main(int argc, char **argv)
--
2.5.0
More information about the Petitboot
mailing list