diff options
-rw-r--r-- | super-intel.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/super-intel.c b/super-intel.c index 5d8944c..99419ff 100644 --- a/super-intel.c +++ b/super-intel.c @@ -489,6 +489,13 @@ static struct extent *get_extents(struct intel_super *super, struct dl *dl) remainder = __le32_to_cpu(dl->disk.total_blocks) - (last->start + last->size); + /* round down to 1k block to satisfy precision of the kernel + * 'size' interface + */ + remainder &= ~1UL; + /* make sure remainder is still sane */ + if (remainder < ROUND_UP(super->len, 512) >> 9) + remainder = ROUND_UP(super->len, 512) >> 9; if (reservation > remainder) reservation = remainder; } |