a8a26f3695
- upstream bugfixes in 3.3 - simplify array assembly in initrd and normal boot. OBS-URL: https://build.opensuse.org/package/show/Base:System/mdadm?expand=0&rev=93
53 lines
1.7 KiB
Diff
53 lines
1.7 KiB
Diff
From b95cb4b9d88c8adf2adb7f2efef3ae3f72b27b8e Mon Sep 17 00:00:00 2001
|
|
From: NeilBrown <neilb@suse.de>
|
|
Date: Thu, 12 Sep 2013 14:57:28 +1000
|
|
Subject: [PATCH] DDF: allow for possibility that there is no secondary copy of
|
|
metadata.
|
|
|
|
If there isn't, we currently write the second copy at some
|
|
random location :-)
|
|
|
|
Reported-and-tested-by: Francis Moreau <francis.moro@gmail.com>
|
|
Signed-off-by: NeilBrown <neilb@suse.de>
|
|
---
|
|
super-ddf.c | 9 +++++++--
|
|
1 file changed, 7 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/super-ddf.c b/super-ddf.c
|
|
index 636d7b4..d2cdda4 100644
|
|
--- a/super-ddf.c
|
|
+++ b/super-ddf.c
|
|
@@ -880,7 +880,8 @@ static int load_ddf_headers(int fd, struct ddf_super *super, char *devname)
|
|
super->primary.openflag && !super->secondary.openflag)
|
|
)
|
|
super->active = &super->secondary;
|
|
- } else if (devname)
|
|
+ } else if (devname &&
|
|
+ be64_to_cpu(super->anchor.secondary_lba) != ~(__u64)0)
|
|
pr_err("Failed to load secondary DDF header on %s\n",
|
|
devname);
|
|
if (super->active == NULL)
|
|
@@ -2810,7 +2811,9 @@ static int add_to_super_ddf(struct supertype *st,
|
|
} while (0)
|
|
__calc_lba(dd, ddf->dlist, workspace_lba, 32);
|
|
__calc_lba(dd, ddf->dlist, primary_lba, 16);
|
|
- __calc_lba(dd, ddf->dlist, secondary_lba, 32);
|
|
+ if (ddf->dlist == NULL ||
|
|
+ be64_to_cpu(ddf->dlist->secondary_lba) != ~(__u64)0)
|
|
+ __calc_lba(dd, ddf->dlist, secondary_lba, 32);
|
|
pde->config_size = dd->workspace_lba;
|
|
|
|
sprintf(pde->path, "%17.17s","Information: nil") ;
|
|
@@ -2892,6 +2895,8 @@ static int __write_ddf_structure(struct dl *d, struct ddf_super *ddf, __u8 type)
|
|
default:
|
|
return 0;
|
|
}
|
|
+ if (sector == ~(__u64)0)
|
|
+ return 0;
|
|
|
|
header->type = type;
|
|
header->openflag = 1;
|
|
--
|
|
1.8.3.1.487.g3e7a5b4
|
|
|