From c754525cee1d9266ebc80a99ba8ba82882f77bc5 Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Mon, 3 Aug 2009 10:59:57 +1000 Subject: [PATCH] --- yaml --- r: 156202 b: refs/heads/master c: 70471dafe3390243c598a3165dfb86b8b8b3f4fe h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/md/md.c | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 894db008b32d..097909b6886d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3673f305faf1bc66ead751344f8262ace851ff44 +refs/heads/master: 70471dafe3390243c598a3165dfb86b8b8b3f4fe diff --git a/trunk/drivers/md/md.c b/trunk/drivers/md/md.c index 249b2896d4ea..52c988b072d0 100644 --- a/trunk/drivers/md/md.c +++ b/trunk/drivers/md/md.c @@ -1399,8 +1399,14 @@ static void super_1_sync(mddev_t *mddev, mdk_rdev_t *rdev) if (rdev2->desc_nr+1 > max_dev) max_dev = rdev2->desc_nr+1; - if (max_dev > le32_to_cpu(sb->max_dev)) + if (max_dev > le32_to_cpu(sb->max_dev)) { + int bmask; sb->max_dev = cpu_to_le32(max_dev); + rdev->sb_size = max_dev * 2 + 256; + bmask = queue_logical_block_size(rdev->bdev->bd_disk->queue)-1; + if (rdev->sb_size & bmask) + rdev->sb_size = (rdev->sb_size | bmask) + 1; + } for (i=0; idev_roles[i] = cpu_to_le16(0xfffe);