|
@@ -775,17 +775,15 @@ int dm_sm_metadata_create(struct dm_space_map *sm,
|
|
|
memcpy(&smm->sm, &bootstrap_ops, sizeof(smm->sm));
|
|
|
|
|
|
r = sm_ll_new_metadata(&smm->ll, tm);
|
|
|
+ if (!r) {
|
|
|
+ if (nr_blocks > DM_SM_METADATA_MAX_BLOCKS)
|
|
|
+ nr_blocks = DM_SM_METADATA_MAX_BLOCKS;
|
|
|
+ r = sm_ll_extend(&smm->ll, nr_blocks);
|
|
|
+ }
|
|
|
+ memcpy(&smm->sm, &ops, sizeof(smm->sm));
|
|
|
if (r)
|
|
|
return r;
|
|
|
|
|
|
- if (nr_blocks > DM_SM_METADATA_MAX_BLOCKS)
|
|
|
- nr_blocks = DM_SM_METADATA_MAX_BLOCKS;
|
|
|
- r = sm_ll_extend(&smm->ll, nr_blocks);
|
|
|
- if (r)
|
|
|
- return r;
|
|
|
-
|
|
|
- memcpy(&smm->sm, &ops, sizeof(smm->sm));
|
|
|
-
|
|
|
/*
|
|
|
* Now we need to update the newly created data structures with the
|
|
|
* allocated blocks that they were built from.
|