When disks are added size has to increase in metadata.
This size should be used by common code to set size in md when reshape will be finished.
Signed-off-by: Adam Kwolek <adam.kwolek@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
void **sp = update->space_list;
struct imsm_dev *newdev;
struct imsm_map *newmap, *oldmap;
+ int used_disks;
if (!sp)
continue;
memcpy(newmap, oldmap, sizeof_imsm_map(oldmap));
}
+ /* calculate new size
+ */
+ used_disks = imsm_num_data_members(newdev, 0);
+ if (used_disks) {
+ unsigned long long array_blocks;
+
+ array_blocks =
+ newmap->blocks_per_member
+ * used_disks;
+ /* round array size down to closest MB
+ */
+ array_blocks = (array_blocks
+ >> SECT_PER_MB_SHIFT)
+ << SECT_PER_MB_SHIFT;
+ newdev->size_low =
+ __cpu_to_le32(
+ (__u32)array_blocks);
+ newdev->size_high =
+ __cpu_to_le32(
+ (__u32)(array_blocks >> 32));
+ }
+
sp = (void **)id->dev;
id->dev = newdev;
*sp = tofree;