On 09/11/2013 01:35 AM, NeilBrown wrote: > I think this patch will help. The last hunk in particular should make the > difference. > > Please let me know if it fixes the problem. Thanks for figuring this out. Indeed I forgot the possibility that secondary LBA may be unused when I wrote that code. Are you going to fix this directly? Otherwise I might go over it, double-check, and submit a patch. Martin > > Thanks, > NeilBrown > > > diff --git a/super-ddf.c b/super-ddf.c > index 636d7b4..86f9bb0 100644 > --- a/super-ddf.c > +++ b/super-ddf.c > @@ -880,7 +880,7 @@ 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 && super->anchor.secondary_lba != ~(__u64)0) > pr_err("Failed to load secondary DDF header on %s\n", > devname); > if (super->active == NULL) > @@ -2810,7 +2810,8 @@ 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 || 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 +2893,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; -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html