Lines Matching refs:info

1449 	 * 2/ Add info for each disk, keeping track of highest desc_nr (next_spare);
4636 * superblock to initialise info and check validity.
6634 mdu_array_info_t info;
6657 info.major_version = mddev->major_version;
6658 info.minor_version = mddev->minor_version;
6659 info.patch_version = MD_PATCHLEVEL_VERSION;
6660 info.ctime = clamp_t(time64_t, mddev->ctime, 0, U32_MAX);
6661 info.level = mddev->level;
6662 info.size = mddev->dev_sectors / 2;
6663 if (info.size != mddev->dev_sectors / 2) /* overflow */
6664 info.size = -1;
6665 info.nr_disks = nr;
6666 info.raid_disks = mddev->raid_disks;
6667 info.md_minor = mddev->md_minor;
6668 info.not_persistent= !mddev->persistent;
6670 info.utime = clamp_t(time64_t, mddev->utime, 0, U32_MAX);
6671 info.state = 0;
6673 info.state = (1<<MD_SB_CLEAN);
6675 info.state |= (1<<MD_SB_BITMAP_PRESENT);
6677 info.state |= (1<<MD_SB_CLUSTERED);
6678 info.active_disks = insync;
6679 info.working_disks = working;
6680 info.failed_disks = failed;
6681 info.spare_disks = spare;
6683 info.layout = mddev->layout;
6684 info.chunk_size = mddev->chunk_sectors << 9;
6686 if (copy_to_user(arg, &info, sizeof(info)))
6726 mdu_disk_info_t info;
6729 if (copy_from_user(&info, arg, sizeof(info)))
6733 rdev = md_find_rdev_nr_rcu(mddev, info.number);
6735 info.major = MAJOR(rdev->bdev->bd_dev);
6736 info.minor = MINOR(rdev->bdev->bd_dev);
6737 info.raid_disk = rdev->raid_disk;
6738 info.state = 0;
6740 info.state |= (1<<MD_DISK_FAULTY);
6742 info.state |= (1<<MD_DISK_ACTIVE);
6743 info.state |= (1<<MD_DISK_SYNC);
6746 info.state |= (1<<MD_DISK_JOURNAL);
6748 info.state |= (1<<MD_DISK_WRITEMOSTLY);
6750 info.state |= (1<<MD_DISK_FAILFAST);
6752 info.major = info.minor = 0;
6753 info.raid_disk = -1;
6754 info.state = (1<<MD_DISK_REMOVED);
6758 if (copy_to_user(arg, &info, sizeof(info)))
6764 int md_add_new_disk(struct mddev *mddev, struct mdu_disk_info_s *info)
6768 dev_t dev = MKDEV(info->major,info->minor);
6771 !(info->state & ((1 << MD_DISK_CLUSTER_ADD) | (1 << MD_DISK_CANDIDATE)))) {
6777 if (info->major != MAJOR(dev) || info->minor != MINOR(dev))
6833 if (info->state & (1<<MD_DISK_SYNC) &&
6834 info->raid_disk < mddev->raid_disks) {
6835 rdev->raid_disk = info->raid_disk;
6844 if ((info->state & (1<<MD_DISK_SYNC)) &&
6845 rdev->raid_disk != info->raid_disk) {
6854 if (info->state & (1<<MD_DISK_WRITEMOSTLY))
6858 if (info->state & (1<<MD_DISK_FAILFAST))
6863 if (info->state & (1<<MD_DISK_JOURNAL)) {
6884 if (info->state & (1 << MD_DISK_CANDIDATE))
6886 else if (info->state & (1 << MD_DISK_CLUSTER_ADD)) {
6903 if (info->state & (1 << MD_DISK_CANDIDATE)) {
6931 if (!(info->state & (1<<MD_DISK_FAULTY))) {
6939 rdev->desc_nr = info->number;
6940 if (info->raid_disk < mddev->raid_disks)
6941 rdev->raid_disk = info->raid_disk;
6946 if (info->state & (1<<MD_DISK_SYNC))
6949 if (info->state & (1<<MD_DISK_WRITEMOSTLY))
6951 if (info->state & (1<<MD_DISK_FAILFAST))
7182 int md_set_array_info(struct mddev *mddev, struct mdu_array_info_s *info)
7184 if (info->raid_disks == 0) {
7186 if (info->major_version < 0 ||
7187 info->major_version >= ARRAY_SIZE(super_types) ||
7188 super_types[info->major_version].name == NULL) {
7191 info->major_version);
7194 mddev->major_version = info->major_version;
7195 mddev->minor_version = info->minor_version;
7196 mddev->patch_version = info->patch_version;
7197 mddev->persistent = !info->not_persistent;
7209 mddev->level = info->level;
7211 mddev->dev_sectors = 2 * (sector_t)info->size;
7212 mddev->raid_disks = info->raid_disks;
7216 if (info->state & (1<<MD_SB_CLEAN))
7220 mddev->persistent = ! info->not_persistent;
7223 mddev->layout = info->layout;
7225 /* Cannot trust RAID0 layout info here */
7227 mddev->chunk_sectors = info->chunk_size >> 9;
7356 * fields in the info are checked against the array.
7360 static int update_array_info(struct mddev *mddev, mdu_array_info_t *info)
7370 if (mddev->major_version != info->major_version ||
7371 mddev->minor_version != info->minor_version ||
7372 /* mddev->patch_version != info->patch_version || */
7373 mddev->ctime != info->ctime ||
7374 mddev->level != info->level ||
7375 /* mddev->layout != info->layout || */
7376 mddev->persistent != !info->not_persistent ||
7377 mddev->chunk_sectors != info->chunk_size >> 9 ||
7379 ((state^info->state) & 0xfffffe00)
7383 if (info->size >= 0 && mddev->dev_sectors / 2 != info->size)
7385 if (mddev->raid_disks != info->raid_disks)
7387 if (mddev->layout != info->layout)
7389 if ((state ^ info->state) & (1<<MD_SB_BITMAP_PRESENT))
7396 if (mddev->layout != info->layout) {
7404 mddev->new_layout = info->layout;
7411 if (info->size >= 0 && mddev->dev_sectors / 2 != info->size)
7412 rv = update_size(mddev, (sector_t)info->size * 2);
7414 if (mddev->raid_disks != info->raid_disks)
7415 rv = update_raid_disks(mddev, info->raid_disks);
7417 if ((state ^ info->state) & (1<<MD_SB_BITMAP_PRESENT)) {
7426 if (info->state & (1<<MD_SB_BITMAP_PRESENT)) {
7655 mdu_array_info_t info;
7657 memset(&info, 0, sizeof(info));
7658 else if (copy_from_user(&info, argp, sizeof(info))) {
7663 err = update_array_info(mddev, &info);
7665 pr_warn("md: couldn't update array info. %d\n", err);
7680 err = md_set_array_info(mddev, &info);
7682 pr_warn("md: couldn't set array info. %d\n", err);
7727 mdu_disk_info_t info;
7728 if (copy_from_user(&info, argp, sizeof(info)))
7730 else if (!(info.state & (1<<MD_DISK_SYNC)))
7734 err = md_add_new_disk(mddev, &info);
7798 mdu_disk_info_t info;
7799 if (copy_from_user(&info, argp, sizeof(info)))
7802 err = md_add_new_disk(mddev, &info);