From: NeilBrown Date: Mon, 19 Nov 2012 02:11:26 +0000 (+1100) Subject: md/raid5: round discard alignment up to power of 2. X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=4ac6875eeb97a49bad7bc8d56b5ec935904fc6e7;p=sagit-ice-cold%2Fkernel_xiaomi_msm8998.git md/raid5: round discard alignment up to power of 2. blkdev_issue_discard currently assumes that the granularity is a power of 2. So in raid5, round the chosen number up to avoid embarrassment. Cc: Shaohua Li Signed-off-by: NeilBrown --- diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index c5439dce0295..baea94f0670a 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c @@ -5529,6 +5529,10 @@ static int run(struct mddev *mddev) * discard data disk but write parity disk */ stripe = stripe * PAGE_SIZE; + /* Round up to power of 2, as discard handling + * currently assumes that */ + while ((stripe-1) & stripe) + stripe = (stripe | (stripe-1)) + 1; mddev->queue->limits.discard_alignment = stripe; mddev->queue->limits.discard_granularity = stripe; /*