summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlasdair G Kergon <agk@redhat.com>2012-08-07 18:37:35 +0100
committerAlasdair G Kergon <agk@redhat.com>2012-08-07 18:37:35 +0100
commit7b5ea9a5a89b4eff41520142f719a7d89435f7df (patch)
tree4d058c1fc48cff836c84a51b1e2beadbf8c12d62
parentadfa778a58719cb78971526b68a93cee56a18cc4 (diff)
downloadlvm2-7b5ea9a5a89b4eff41520142f719a7d89435f7df.tar.gz
lvm2-7b5ea9a5a89b4eff41520142f719a7d89435f7df.tar.xz
lvm2-7b5ea9a5a89b4eff41520142f719a7d89435f7df.zip
thin: tighten discard string conversions
Respond with "unknown" rather than a NULL pointer if there's an internal error and the discard value is invalid. Don't accept 'no_passdown' or 'no-passdown' variants in the LVM metadata: this is written by the program so should only ever contain "nopassdown" and should be validated strictly against that.
-rw-r--r--lib/metadata/thin_manip.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/lib/metadata/thin_manip.c b/lib/metadata/thin_manip.c
index 8d1744cd..0395b48a 100644
--- a/lib/metadata/thin_manip.c
+++ b/lib/metadata/thin_manip.c
@@ -433,10 +433,7 @@ int get_pool_discard(const char *str, thin_discard_t *discard)
{
if (!strcasecmp(str, "passdown"))
*discard = THIN_DISCARD_PASSDOWN;
- /* Allow some variation in thin parameter */
- else if (!strcasecmp(str, "nopassdown") ||
- !strcasecmp(str, "no-passdown") ||
- !strcasecmp(str, "no_passdown"))
+ else if (!strcasecmp(str, "nopassdown"))
*discard = THIN_DISCARD_NO_PASSDOWN;
else if (!strcasecmp(str, "ignore"))
*discard = THIN_DISCARD_IGNORE;
@@ -459,7 +456,7 @@ const char *get_pool_discard_name(thin_discard_t discard)
return "ignore";
}
- log_error(INTERNAL_ERROR "Uknown discard type.");
+ log_error(INTERNAL_ERROR "Uknown discard type encountered.");
- return NULL;
+ return "unknown";
}