mirror of https://gitee.com/openkylin/linux.git
Merge branch 'for-linus' of git://neil.brown.name/md
* 'for-linus' of git://neil.brown.name/md: md: Update documentation for sync_min and sync_max entries md: Cleanup after raid45->raid0 takeover md: Fix dev_sectors on takeover from raid0 to raid4/5 md/raid5: remove setting of ->queue_lock
This commit is contained in:
commit
d09571059b
|
@ -552,6 +552,16 @@ also have
|
|||
within the array where IO will be blocked. This is currently
|
||||
only supported for raid4/5/6.
|
||||
|
||||
sync_min
|
||||
sync_max
|
||||
The two values, given as numbers of sectors, indicate a range
|
||||
withing the array where 'check'/'repair' will operate. Must be
|
||||
a multiple of chunk_size. When it reaches "sync_max" it will
|
||||
pause, rather than complete.
|
||||
You can use 'select' or 'poll' on "sync_completed" to wait for
|
||||
that number to reach sync_max. Then you can either increase
|
||||
"sync_max", or can write 'idle' to "sync_action".
|
||||
|
||||
|
||||
Each active md device may also have attributes specific to the
|
||||
personality module that manages it.
|
||||
|
|
|
@ -3170,6 +3170,7 @@ level_store(mddev_t *mddev, const char *buf, size_t len)
|
|||
mddev->layout = mddev->new_layout;
|
||||
mddev->chunk_sectors = mddev->new_chunk_sectors;
|
||||
mddev->delta_disks = 0;
|
||||
mddev->degraded = 0;
|
||||
if (mddev->pers->sync_request == NULL) {
|
||||
/* this is now an array without redundancy, so
|
||||
* it must always be in_sync
|
||||
|
|
|
@ -5151,7 +5151,6 @@ static int run(mddev_t *mddev)
|
|||
|
||||
mddev->queue->backing_dev_info.congested_data = mddev;
|
||||
mddev->queue->backing_dev_info.congested_fn = raid5_congested;
|
||||
mddev->queue->queue_lock = &conf->device_lock;
|
||||
|
||||
chunk_size = mddev->chunk_sectors << 9;
|
||||
blk_queue_io_min(mddev->queue, chunk_size);
|
||||
|
@ -5679,6 +5678,7 @@ static void raid5_quiesce(mddev_t *mddev, int state)
|
|||
static void *raid45_takeover_raid0(mddev_t *mddev, int level)
|
||||
{
|
||||
struct raid0_private_data *raid0_priv = mddev->private;
|
||||
unsigned long long sectors;
|
||||
|
||||
/* for raid0 takeover only one zone is supported */
|
||||
if (raid0_priv->nr_strip_zones > 1) {
|
||||
|
@ -5687,6 +5687,9 @@ static void *raid45_takeover_raid0(mddev_t *mddev, int level)
|
|||
return ERR_PTR(-EINVAL);
|
||||
}
|
||||
|
||||
sectors = raid0_priv->strip_zone[0].zone_end;
|
||||
sector_div(sectors, raid0_priv->strip_zone[0].nb_dev);
|
||||
mddev->dev_sectors = sectors;
|
||||
mddev->new_level = level;
|
||||
mddev->new_layout = ALGORITHM_PARITY_N;
|
||||
mddev->new_chunk_sectors = mddev->chunk_sectors;
|
||||
|
|
Loading…
Reference in New Issue