Skip to contentSkip to conversation

Subject: [PATCH 008/009]: raid5: chunk size check in run

PATCH raz ben yehuda 2 participants 2 messages May 19, 2009 – May 20, 2009 MD RAID

lore
Share & tools
lore
#0 lore raw

have raid5 check chunk size in run method instead of in md

 raid5.c |   10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)
Signed-off-by [email protected]
drivers/md/raid5.c +9 -1
index e4608d6..0c688ee 100644
@@ -4452,7 +4452,15 @@ static int run(mddev_t *mddev)
 	raid5_conf_t *conf;
 	int working_disks = 0;
 	mdk_rdev_t *rdev;
-
+	/*
+	 * chunk-size has to be a power of 2
+	 */
+	if ((1 << ffz(~mddev->chunk_size)) != mddev->chunk_size) {
+		printk(KERN_ERR "%s chunk_size of %d not valid\n",
+			mdname(mddev),
+			mddev->chunk_size);
+		return -EINVAL;
+	}
 	if (mddev->reshape_position != MaxSector) {
 		/* Check that we can continue the reshape.
 		 * Currently only disks can change, it must
#1 lore raw
Quoted 16 lines · On Tuesday May 19, [email protected] wrote:

have raid5 check chunk size in run method instead of in md

 raid5.c |   10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)
Signed-off-by [email protected]
drivers/md/raid5.c +2 -1
index e4608d6..0c688ee 100644
@@ -4452,7 +4452,15 @@ static int run(mddev_t *mddev)
 	raid5_conf_t *conf;
 	int working_disks = 0;
 	mdk_rdev_t *rdev;
-
+	/*
+	 * chunk-size has to be a power of 2

drivers/md/raid5.c static int run(mddev_t *mddev) · line 4466

Quoted 10 lines
drivers/md/raid5.c +7 -0
+	 */
+	if ((1 << ffz(~mddev->chunk_size)) != mddev->chunk_size) {
+		printk(KERN_ERR "%s chunk_size of %d not valid\n",
+			mdname(mddev),
+			mddev->chunk_size);
+		return -EINVAL;
+	}
 	if (mddev->reshape_position != MaxSector) {
 		/* Check that we can continue the reshape.
 		 * Currently only disks can change, it must

I've moved this test from 'run' to 'setup_conf' which is called by run and also by the reshape code, and already has a test on chunk_size.

Thanks,
NeilBrown