diff options
Diffstat (limited to 'drivers/md/md.c')
-rw-r--r-- | drivers/md/md.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c index 32fc19c540d4..3bd13b276e45 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -3500,6 +3500,12 @@ level_store(struct mddev *mddev, const char *buf, size_t len) mdname(mddev), clevel); return -EINVAL; } + if (mddev->bitmap && !pers->quiesce) { + module_put(pers->owner); + printk(KERN_WARNING "md: %s: %s does not support a bitmap\n", + mdname(mddev), clevel); + return -EINVAL; + } rdev_for_each(rdev, mddev) rdev->new_raid_disk = rdev->raid_disk; @@ -8592,7 +8598,7 @@ static int __init md_init(void) goto err_mdp; mdp_major = ret; - blk_register_region(MKDEV(MD_MAJOR, 0), 1UL<<MINORBITS, THIS_MODULE, + blk_register_region(MKDEV(MD_MAJOR, 0), 512, THIS_MODULE, md_probe, NULL, NULL); blk_register_region(MKDEV(mdp_major, 0), 1UL<<MINORBITS, THIS_MODULE, md_probe, NULL, NULL); @@ -8687,7 +8693,7 @@ static __exit void md_exit(void) struct list_head *tmp; int delay = 1; - blk_unregister_region(MKDEV(MD_MAJOR,0), 1U << MINORBITS); + blk_unregister_region(MKDEV(MD_MAJOR,0), 512); blk_unregister_region(MKDEV(mdp_major,0), 1U << MINORBITS); unregister_blkdev(MD_MAJOR,"md"); |