On Tue, Nov 6, 2018 at 12:23 AM NeilBrown <neilb@xxxxxxxx> wrote: > > On Mon, Nov 05 2018, Gioh Kim wrote: > > > getinfo_super() is called before updating metadata with update_super(). > > Some information in content variable is not updated. > > > > Currently there is no problem with it. But I think it could be problematic > > at any moment. > > > > Signed-off-by: Gioh Kim <gi-oh.kim@xxxxxxxxxxxxxxxx> > > This doesn't make any sense at all to me. > This is all in the c->update branch. What the code does is: > - load the metadata > - update the metadata > - save the metadata > > You want to move part of "load the metadata" to after "save the > metadata". That makes no sense. Hi Neil, I think loading the metadata is done by load_super(). Current code is: load_super(): load the metadata to st->sb getinfo_super: copy some metadata from st->sb to "struct mdinfo *content" update_super: update the metadata of st->sb store_super: store the metadata of st->sb into the disk If update_super() changes some metadata, the data of content variable is not updated. For example, update_super() changes st->sb->devflags (of course, current code does not change devflags), the content variable has only the old flag. Again, current update_super() does not change data which is copied to struct mdinfo *content. So there is no problem yet. But I think it is not logical. > > NeilBrown > > > > --- > > Assemble.c | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/Assemble.c b/Assemble.c > > index fc0d464..9fdd4da 100644 > > --- a/Assemble.c > > +++ b/Assemble.c > > @@ -618,7 +618,6 @@ static int load_devices(struct devs *devices, char *devmap, > > *stp = st; > > return -1; > > } > > - tst->ss->getinfo_super(tst, content, devmap + devcnt * content->array.raid_disks); > > > > memcpy(content->uuid, ident->uuid, 16); > > strcpy(content->name, ident->name); > > @@ -675,6 +674,8 @@ static int load_devices(struct devs *devices, char *devmap, > > else > > bitmap_done = 1; > > } > > + > > + tst->ss->getinfo_super(tst, content, devmap + devcnt * content->array.raid_disks); > > } else { > > dfd = dev_open(devname, > > tmpdev->disposition == 'I' > > -- > > 2.14.1 -- GIOH KIM Linux Kernel Entwickler 1&1 IONOS Cloud GmbH Greifswalder Str. 207 D - 10405 Berlin Tel: +49 176 2697 8962 Fax: +49 30 577 008 299 Email: gi-oh.kim@xxxxxxxxxxxxxxx URL: https://www.ionos.com Sitz der Gesellschaft: Berlin Registergericht: Amtsgericht Charlottenburg, HRB 125506 B Geschäftsführer: Achim Weiss, Matthias Steinberg, Christoph Steffens