From dda5855f96baa1b7e15e6ee8bb6d985e269257e5 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Wed, 26 Nov 2008 15:39:51 -0700 Subject: [PATCH] imsm: fix metadata reservation 1/ When truncating the space reserved for the metadata round down to an even numbered sector count to avoid an off-by-one error when sysfs_add_disk rounds up. 2/ Set the current metadata parameter block size as a floor. Signed-off-by: Dan Williams --- super-intel.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/super-intel.c b/super-intel.c index 5d8944ce..99419ffd 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; } -- 2.47.2