long long size,
int level, char *layout_str, int chunksize, int raid_disks,
struct mddev_dev *devlist,
- int force)
+ int assume_clean, int force)
{
/* Make some changes in the shape of an array.
* The kernel must support the change.
rv = 1;
goto release;
}
+ if (assume_clean) {
+ /* This will fail on kernels newer than 2.6.40 unless
+ * a backport has been arranged.
+ */
+ if (sra == NULL ||
+ sysfs_set_str(sra, NULL, "resync_start", "none") < 0)
+ fprintf(stderr, Name ": --assume-clean not support with --grow on this kernel\n");
+ }
ioctl(fd, GET_ARRAY_INFO, &array);
size = get_component_size(fd)/2;
if (size == 0)
actually clean. If that is the case, such as after running
badblocks, this argument can be used to tell mdadm the
facts the operator knows.
+.IP
+When an array is resized to a larger size with
+.B "\-\-grow \-\-size="
+the new space is normally resynced in that same way that the whole
+array is resynced at creation. From Linux version 2.6.40,
+.B \-\-assume\-clean
+can be used with that command to avoid the automatic resync.
.TP
.BR \-\-backup\-file=
case O(CREATE,AssumeClean):
case O(BUILD,AssumeClean): /* assume clean */
+ case O(GROW,AssumeClean):
assume_clean = 1;
continue;
rv = Grow_reshape(devlist->devname, mdfd, quiet, backup_file,
size, level, layout_str, chunk, raiddisks,
devlist->next,
- force);
+ assume_clean, force);
} else if (array_size < 0)
fprintf(stderr, Name ": no changes to --grow\n");
break;
long long size,
int level, char *layout_str, int chunksize, int raid_disks,
struct mddev_dev *devlist,
- int force);
+ int assume_clean, int force);
extern int Grow_restart(struct supertype *st, struct mdinfo *info,
int *fdlist, int cnt, char *backup_file, int verbose);
extern int Grow_continue(int mdfd, struct supertype *st,