|
@@ -440,14 +440,6 @@ void md_flush_request(struct mddev *mddev, struct bio *bio)
|
|
}
|
|
}
|
|
EXPORT_SYMBOL(md_flush_request);
|
|
EXPORT_SYMBOL(md_flush_request);
|
|
|
|
|
|
-void md_unplug(struct blk_plug_cb *cb, bool from_schedule)
|
|
|
|
-{
|
|
|
|
- struct mddev *mddev = cb->data;
|
|
|
|
- md_wakeup_thread(mddev->thread);
|
|
|
|
- kfree(cb);
|
|
|
|
-}
|
|
|
|
-EXPORT_SYMBOL(md_unplug);
|
|
|
|
-
|
|
|
|
static inline struct mddev *mddev_get(struct mddev *mddev)
|
|
static inline struct mddev *mddev_get(struct mddev *mddev)
|
|
{
|
|
{
|
|
atomic_inc(&mddev->active);
|
|
atomic_inc(&mddev->active);
|
|
@@ -1887,7 +1879,7 @@ super_1_rdev_size_change(struct md_rdev *rdev, sector_t num_sectors)
|
|
}
|
|
}
|
|
sb = page_address(rdev->sb_page);
|
|
sb = page_address(rdev->sb_page);
|
|
sb->data_size = cpu_to_le64(num_sectors);
|
|
sb->data_size = cpu_to_le64(num_sectors);
|
|
- sb->super_offset = rdev->sb_start;
|
|
|
|
|
|
+ sb->super_offset = cpu_to_le64(rdev->sb_start);
|
|
sb->sb_csum = calc_sb_1_csum(sb);
|
|
sb->sb_csum = calc_sb_1_csum(sb);
|
|
do {
|
|
do {
|
|
md_super_write(rdev->mddev, rdev, rdev->sb_start, rdev->sb_size,
|
|
md_super_write(rdev->mddev, rdev, rdev->sb_start, rdev->sb_size,
|
|
@@ -2295,7 +2287,7 @@ static bool does_sb_need_changing(struct mddev *mddev)
|
|
/* Check if any mddev parameters have changed */
|
|
/* Check if any mddev parameters have changed */
|
|
if ((mddev->dev_sectors != le64_to_cpu(sb->size)) ||
|
|
if ((mddev->dev_sectors != le64_to_cpu(sb->size)) ||
|
|
(mddev->reshape_position != le64_to_cpu(sb->reshape_position)) ||
|
|
(mddev->reshape_position != le64_to_cpu(sb->reshape_position)) ||
|
|
- (mddev->layout != le64_to_cpu(sb->layout)) ||
|
|
|
|
|
|
+ (mddev->layout != le32_to_cpu(sb->layout)) ||
|
|
(mddev->raid_disks != le32_to_cpu(sb->raid_disks)) ||
|
|
(mddev->raid_disks != le32_to_cpu(sb->raid_disks)) ||
|
|
(mddev->chunk_sectors != le32_to_cpu(sb->chunksize)))
|
|
(mddev->chunk_sectors != le32_to_cpu(sb->chunksize)))
|
|
return true;
|
|
return true;
|
|
@@ -6458,11 +6450,10 @@ static int set_array_info(struct mddev *mddev, mdu_array_info_t *info)
|
|
mddev->layout = info->layout;
|
|
mddev->layout = info->layout;
|
|
mddev->chunk_sectors = info->chunk_size >> 9;
|
|
mddev->chunk_sectors = info->chunk_size >> 9;
|
|
|
|
|
|
- mddev->max_disks = MD_SB_DISKS;
|
|
|
|
-
|
|
|
|
if (mddev->persistent) {
|
|
if (mddev->persistent) {
|
|
- mddev->flags = 0;
|
|
|
|
- mddev->sb_flags = 0;
|
|
|
|
|
|
+ mddev->max_disks = MD_SB_DISKS;
|
|
|
|
+ mddev->flags = 0;
|
|
|
|
+ mddev->sb_flags = 0;
|
|
}
|
|
}
|
|
set_bit(MD_SB_CHANGE_DEVS, &mddev->sb_flags);
|
|
set_bit(MD_SB_CHANGE_DEVS, &mddev->sb_flags);
|
|
|
|
|
|
@@ -6533,8 +6524,12 @@ static int update_size(struct mddev *mddev, sector_t num_sectors)
|
|
return -ENOSPC;
|
|
return -ENOSPC;
|
|
}
|
|
}
|
|
rv = mddev->pers->resize(mddev, num_sectors);
|
|
rv = mddev->pers->resize(mddev, num_sectors);
|
|
- if (!rv)
|
|
|
|
- revalidate_disk(mddev->gendisk);
|
|
|
|
|
|
+ if (!rv) {
|
|
|
|
+ if (mddev->queue) {
|
|
|
|
+ set_capacity(mddev->gendisk, mddev->array_sectors);
|
|
|
|
+ revalidate_disk(mddev->gendisk);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
return rv;
|
|
return rv;
|
|
}
|
|
}
|
|
|
|
|