diff options
Diffstat (limited to 'sys-fs/mdadm/files/mdadm-3.3.1-mdmon-allow-prepare_update-to-report-failure.patch')
-rw-r--r-- | sys-fs/mdadm/files/mdadm-3.3.1-mdmon-allow-prepare_update-to-report-failure.patch | 119 |
1 files changed, 0 insertions, 119 deletions
diff --git a/sys-fs/mdadm/files/mdadm-3.3.1-mdmon-allow-prepare_update-to-report-failure.patch b/sys-fs/mdadm/files/mdadm-3.3.1-mdmon-allow-prepare_update-to-report-failure.patch deleted file mode 100644 index 772248b19c3d..000000000000 --- a/sys-fs/mdadm/files/mdadm-3.3.1-mdmon-allow-prepare_update-to-report-failure.patch +++ /dev/null @@ -1,119 +0,0 @@ -From 5fe6f031d9a21a935f0ef1b1fbdb314b53f2199f Mon Sep 17 00:00:00 2001 -From: NeilBrown <neilb@suse.de> -Date: Thu, 10 Jul 2014 15:54:02 +1000 -Subject: [PATCH 11/14] mdmon: allow prepare_update to report failure. - -If 'prepare_update' fails for some reason there is little -point continuing on to 'process_update'. -For now only malloc failures are caught, but other failures -will be considered in future. - -Signed-off-by: NeilBrown <neilb@suse.de> ---- - managemon.c | 3 ++- - mdadm.h | 5 ++++- - super-ddf.c | 8 +++++--- - super-intel.c | 9 +++++---- - 4 files changed, 16 insertions(+), 9 deletions(-) - -diff --git a/managemon.c b/managemon.c -index 5f7e2ce..1c9eccc 100644 ---- a/managemon.c -+++ b/managemon.c -@@ -819,7 +819,8 @@ static void handle_message(struct supertype *container, struct metadata_update * - mu->space_list = NULL; - mu->next = NULL; - if (container->ss->prepare_update) -- container->ss->prepare_update(container, mu); -+ if (!container->ss->prepare_update(container, mu)) -+ free_updates(&mu); - queue_metadata_update(mu); - } - } -diff --git a/mdadm.h b/mdadm.h -index 914d67c..02a9288 100644 ---- a/mdadm.h -+++ b/mdadm.h -@@ -929,7 +929,10 @@ extern struct superswitch { - void (*sync_metadata)(struct supertype *st); - void (*process_update)(struct supertype *st, - struct metadata_update *update); -- void (*prepare_update)(struct supertype *st, -+ /* Prepare updates allocates extra memory that might be -+ * needed. If the update cannot be understood, return 0. -+ */ -+ int (*prepare_update)(struct supertype *st, - struct metadata_update *update); - - /* activate_spare will check if the array is degraded and, if it -diff --git a/super-ddf.c b/super-ddf.c -index ab9fc46..1e43ca2 100644 ---- a/super-ddf.c -+++ b/super-ddf.c -@@ -4906,8 +4906,8 @@ static void ddf_process_update(struct supertype *st, - /* case DDF_SPARE_ASSIGN_MAGIC */ - } - --static void ddf_prepare_update(struct supertype *st, -- struct metadata_update *update) -+static int ddf_prepare_update(struct supertype *st, -+ struct metadata_update *update) - { - /* This update arrived at managemon. - * We are about to pass it to monitor. -@@ -4922,15 +4922,17 @@ static void ddf_prepare_update(struct supertype *st, - offsetof(struct vcl, conf) - + ddf->conf_rec_len * 512) != 0) { - update->space = NULL; -- return; -+ return 0; - } - vcl = update->space; - vcl->conf.sec_elmnt_count = conf->sec_elmnt_count; - if (alloc_other_bvds(ddf, vcl) != 0) { - free(update->space); - update->space = NULL; -+ return 0; - } - } -+ return 1; - } - - /* -diff --git a/super-intel.c b/super-intel.c -index 7734bde..2547b4a 100644 ---- a/super-intel.c -+++ b/super-intel.c -@@ -8607,8 +8607,8 @@ static void imsm_process_update(struct supertype *st, - - static struct mdinfo *get_spares_for_grow(struct supertype *st); - --static void imsm_prepare_update(struct supertype *st, -- struct metadata_update *update) -+static int imsm_prepare_update(struct supertype *st, -+ struct metadata_update *update) - { - /** - * Allocate space to hold new disk entries, raid-device entries or a new -@@ -8828,6 +8828,7 @@ static void imsm_prepare_update(struct supertype *st, - else - super->next_buf = NULL; - } -+ return 1; - } - - /* must be called while manager is quiesced */ -@@ -9716,8 +9717,8 @@ static void imsm_update_metadata_locally(struct supertype *st, - mu.space = NULL; - mu.space_list = NULL; - mu.next = NULL; -- imsm_prepare_update(st, &mu); -- imsm_process_update(st, &mu); -+ if (imsm_prepare_update(st, &mu)) -+ imsm_process_update(st, &mu); - - while (mu.space_list) { - void **space = mu.space_list; --- -2.0.0 - |