summaryrefslogtreecommitdiff
path: root/super-intel.c
diff options
context:
space:
mode:
Diffstat (limited to 'super-intel.c')
-rw-r--r--super-intel.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/super-intel.c b/super-intel.c
index 74b6f610..561fa34b 100644
--- a/super-intel.c
+++ b/super-intel.c
@@ -5279,7 +5279,9 @@ static int imsm_bbm_log_size(struct imsm_super *mpb)
#ifndef MDASSEMBLE
static int validate_geometry_imsm_container(struct supertype *st, int level,
int layout, int raiddisks, int chunk,
- unsigned long long size, char *dev,
+ unsigned long long size,
+ unsigned long long data_offset,
+ char *dev,
unsigned long long *freesize,
int verbose)
{
@@ -5341,7 +5343,7 @@ static int validate_geometry_imsm_container(struct supertype *st, int level,
}
}
- *freesize = avail_size_imsm(st, ldsize >> 9, INVALID_SECTORS);
+ *freesize = avail_size_imsm(st, ldsize >> 9, data_offset);
free_imsm(super);
return 1;
@@ -5878,7 +5880,9 @@ validate_geometry_imsm_orom(struct intel_super *super, int level, int layout,
*/
static int validate_geometry_imsm_volume(struct supertype *st, int level,
int layout, int raiddisks, int *chunk,
- unsigned long long size, char *dev,
+ unsigned long long size,
+ unsigned long long data_offset,
+ char *dev,
unsigned long long *freesize,
int verbose)
{
@@ -6161,6 +6165,7 @@ static int reserve_space(struct supertype *st, int raiddisks,
static int validate_geometry_imsm(struct supertype *st, int level, int layout,
int raiddisks, int *chunk, unsigned long long size,
+ unsigned long long data_offset,
char *dev, unsigned long long *freesize,
int verbose)
{
@@ -6176,7 +6181,8 @@ static int validate_geometry_imsm(struct supertype *st, int level, int layout,
/* Must be a fresh device to add to a container */
return validate_geometry_imsm_container(st, level, layout,
raiddisks,
- chunk?*chunk:0, size,
+ chunk?*chunk:0,
+ size, data_offset,
dev, freesize,
verbose);
}
@@ -6219,6 +6225,7 @@ static int validate_geometry_imsm(struct supertype *st, int level, int layout,
/* creating in a given container */
return validate_geometry_imsm_volume(st, level, layout,
raiddisks, chunk, size,
+ data_offset,
dev, freesize, verbose);
}
@@ -6263,7 +6270,7 @@ static int validate_geometry_imsm(struct supertype *st, int level, int layout,
close(cfd);
return validate_geometry_imsm_volume(st, level, layout,
raiddisks, chunk,
- size, dev,
+ size, data_offset, dev,
freesize, 1)
? 1 : -1;
}
@@ -9905,7 +9912,7 @@ enum imsm_reshape_type imsm_analyze_change(struct supertype *st,
imsm_layout,
geo->raid_disks + devNumChange,
&chunk,
- geo->size,
+ geo->size, INVALID_SECTORS,
0, 0, 1))
change = -1;