Commit a94213b1 authored by NeilBrown's avatar NeilBrown Committed by Linus Torvalds
Browse files

[PATCH] md: Allow resync_start to be set and queried via sysfs

Signed-off-by: default avatarNeil Brown <>
Signed-off-by: default avatarAndrew Morton <>
Signed-off-by: default avatarLinus Torvalds <>
parent d4dbd025
......@@ -205,6 +205,12 @@ All md devices contain:
simply a number that is interpretted differently by different
levels. It can be written while assembling an array.
The point at which resync should start. If no resync is needed,
this will be a very large number. At array creation it will
default to 0, though starting the array as 'clean' will
set it much larger.
This file can be written but not read. The value written should
be a block device number as major:minor. e.g. 8:0
......@@ -2235,6 +2235,30 @@ chunk_size_store(mddev_t *mddev, const char *buf, size_t len)
static struct md_sysfs_entry md_chunk_size =
__ATTR(chunk_size, 0644, chunk_size_show, chunk_size_store);
static ssize_t
resync_start_show(mddev_t *mddev, char *page)
return sprintf(page, "%llu\n", (unsigned long long)mddev->recovery_cp);
static ssize_t
resync_start_store(mddev_t *mddev, const char *buf, size_t len)
/* can only set chunk_size if array is not yet active */
char *e;
unsigned long long n = simple_strtoull(buf, &e, 10);
if (mddev->pers)
return -EBUSY;
if (!*buf || (*e && *e != '\n'))
return -EINVAL;
mddev->recovery_cp = n;
return len;
static struct md_sysfs_entry md_resync_start =
__ATTR(resync_start, 0644, resync_start_show, resync_start_store);
* The array state can be:
......@@ -2771,6 +2795,7 @@ static struct attribute *md_default_attrs[] = {
......@@ -3263,6 +3288,7 @@ static int do_md_stop(mddev_t * mddev, int mode)
mddev->array_size = 0;
mddev->size = 0;
mddev->raid_disks = 0;
mddev->recovery_cp = 0;
disk = mddev->gendisk;
if (disk)
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