Commit d66b1b39 authored by NeilBrown's avatar NeilBrown

md: don't allow bitmap file to be added to raid0/linear.

An array can only accept a bitmap if it will call bitmap_daemon_work
periodically, which means it needs a thread running.

If there is no thread, don't allow a bitmap to be added.
Signed-off-by: default avatarNeilBrown <neilb@suse.de>
parent a8461a61
...@@ -5961,7 +5961,7 @@ static int set_bitmap_file(struct mddev *mddev, int fd) ...@@ -5961,7 +5961,7 @@ static int set_bitmap_file(struct mddev *mddev, int fd)
int err = 0; int err = 0;
if (mddev->pers) { if (mddev->pers) {
if (!mddev->pers->quiesce) if (!mddev->pers->quiesce || !mddev->thread)
return -EBUSY; return -EBUSY;
if (mddev->recovery || mddev->sync_thread) if (mddev->recovery || mddev->sync_thread)
return -EBUSY; return -EBUSY;
...@@ -6263,7 +6263,7 @@ static int update_array_info(struct mddev *mddev, mdu_array_info_t *info) ...@@ -6263,7 +6263,7 @@ static int update_array_info(struct mddev *mddev, mdu_array_info_t *info)
rv = update_raid_disks(mddev, info->raid_disks); rv = update_raid_disks(mddev, info->raid_disks);
if ((state ^ info->state) & (1<<MD_SB_BITMAP_PRESENT)) { if ((state ^ info->state) & (1<<MD_SB_BITMAP_PRESENT)) {
if (mddev->pers->quiesce == NULL) if (mddev->pers->quiesce == NULL || mddev->thread == NULL)
return -EINVAL; return -EINVAL;
if (mddev->recovery || mddev->sync_thread) if (mddev->recovery || mddev->sync_thread)
return -EBUSY; return -EBUSY;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment