Lines Matching refs:info

1408 	 * 2/ Add info for each disk, keeping track of highest desc_nr (next_spare);
4566 * superblock to initialise info and check validity.
6652 mdu_array_info_t info;
6675 info.major_version = mddev->major_version;
6676 info.minor_version = mddev->minor_version;
6677 info.patch_version = MD_PATCHLEVEL_VERSION;
6678 info.ctime = clamp_t(time64_t, mddev->ctime, 0, U32_MAX);
6679 info.level = mddev->level;
6680 info.size = mddev->dev_sectors / 2;
6681 if (info.size != mddev->dev_sectors / 2) /* overflow */
6682 info.size = -1;
6683 info.nr_disks = nr;
6684 info.raid_disks = mddev->raid_disks;
6685 info.md_minor = mddev->md_minor;
6686 info.not_persistent= !mddev->persistent;
6688 info.utime = clamp_t(time64_t, mddev->utime, 0, U32_MAX);
6689 info.state = 0;
6691 info.state = (1<<MD_SB_CLEAN);
6693 info.state |= (1<<MD_SB_BITMAP_PRESENT);
6695 info.state |= (1<<MD_SB_CLUSTERED);
6696 info.active_disks = insync;
6697 info.working_disks = working;
6698 info.failed_disks = failed;
6699 info.spare_disks = spare;
6701 info.layout = mddev->layout;
6702 info.chunk_size = mddev->chunk_sectors << 9;
6704 if (copy_to_user(arg, &info, sizeof(info)))
6744 mdu_disk_info_t info;
6747 if (copy_from_user(&info, arg, sizeof(info)))
6751 rdev = md_find_rdev_nr_rcu(mddev, info.number);
6753 info.major = MAJOR(rdev->bdev->bd_dev);
6754 info.minor = MINOR(rdev->bdev->bd_dev);
6755 info.raid_disk = rdev->raid_disk;
6756 info.state = 0;
6758 info.state |= (1<<MD_DISK_FAULTY);
6760 info.state |= (1<<MD_DISK_ACTIVE);
6761 info.state |= (1<<MD_DISK_SYNC);
6764 info.state |= (1<<MD_DISK_JOURNAL);
6766 info.state |= (1<<MD_DISK_WRITEMOSTLY);
6768 info.state |= (1<<MD_DISK_FAILFAST);
6770 info.major = info.minor = 0;
6771 info.raid_disk = -1;
6772 info.state = (1<<MD_DISK_REMOVED);
6776 if (copy_to_user(arg, &info, sizeof(info)))
6782 int md_add_new_disk(struct mddev *mddev, struct mdu_disk_info_s *info)
6785 dev_t dev = MKDEV(info->major,info->minor);
6788 !(info->state & ((1 << MD_DISK_CLUSTER_ADD) | (1 << MD_DISK_CANDIDATE)))) {
6794 if (info->major != MAJOR(dev) || info->minor != MINOR(dev))
6850 if (info->state & (1<<MD_DISK_SYNC) &&
6851 info->raid_disk < mddev->raid_disks) {
6852 rdev->raid_disk = info->raid_disk;
6860 if ((info->state & (1<<MD_DISK_SYNC)) &&
6861 rdev->raid_disk != info->raid_disk) {
6870 if (info->state & (1<<MD_DISK_WRITEMOSTLY))
6874 if (info->state & (1<<MD_DISK_FAILFAST))
6879 if (info->state & (1<<MD_DISK_JOURNAL)) {
6900 if (info->state & (1 << MD_DISK_CANDIDATE))
6902 else if (info->state & (1 << MD_DISK_CLUSTER_ADD)) {
6919 if (info->state & (1 << MD_DISK_CANDIDATE)) {
6947 if (!(info->state & (1<<MD_DISK_FAULTY))) {
6955 rdev->desc_nr = info->number;
6956 if (info->raid_disk < mddev->raid_disks)
6957 rdev->raid_disk = info->raid_disk;
6962 if (info->state & (1<<MD_DISK_SYNC))
6965 if (info->state & (1<<MD_DISK_WRITEMOSTLY))
6967 if (info->state & (1<<MD_DISK_FAILFAST))
7214 int md_set_array_info(struct mddev *mddev, struct mdu_array_info_s *info)
7216 if (info->raid_disks == 0) {
7218 if (info->major_version < 0 ||
7219 info->major_version >= ARRAY_SIZE(super_types) ||
7220 super_types[info->major_version].name == NULL) {
7223 info->major_version);
7226 mddev->major_version = info->major_version;
7227 mddev->minor_version = info->minor_version;
7228 mddev->patch_version = info->patch_version;
7229 mddev->persistent = !info->not_persistent;
7241 mddev->level = info->level;
7243 mddev->dev_sectors = 2 * (sector_t)info->size;
7244 mddev->raid_disks = info->raid_disks;
7248 if (info->state & (1<<MD_SB_CLEAN))
7252 mddev->persistent = ! info->not_persistent;
7255 mddev->layout = info->layout;
7257 /* Cannot trust RAID0 layout info here */
7259 mddev->chunk_sectors = info->chunk_size >> 9;
7388 * fields in the info are checked against the array.
7392 static int update_array_info(struct mddev *mddev, mdu_array_info_t *info)
7402 if (mddev->major_version != info->major_version ||
7403 mddev->minor_version != info->minor_version ||
7404 /* mddev->patch_version != info->patch_version || */
7405 mddev->ctime != info->ctime ||
7406 mddev->level != info->level ||
7407 /* mddev->layout != info->layout || */
7408 mddev->persistent != !info->not_persistent ||
7409 mddev->chunk_sectors != info->chunk_size >> 9 ||
7411 ((state^info->state) & 0xfffffe00)
7415 if (info->size >= 0 && mddev->dev_sectors / 2 != info->size)
7417 if (mddev->raid_disks != info->raid_disks)
7419 if (mddev->layout != info->layout)
7421 if ((state ^ info->state) & (1<<MD_SB_BITMAP_PRESENT))
7428 if (mddev->layout != info->layout) {
7436 mddev->new_layout = info->layout;
7443 if (info->size >= 0 && mddev->dev_sectors / 2 != info->size)
7444 rv = update_size(mddev, (sector_t)info->size * 2);
7446 if (mddev->raid_disks != info->raid_disks)
7447 rv = update_raid_disks(mddev, info->raid_disks);
7449 if ((state ^ info->state) & (1<<MD_SB_BITMAP_PRESENT)) {
7458 if (info->state & (1<<MD_SB_BITMAP_PRESENT)) {
7582 mdu_array_info_t info;
7586 memset(&info, 0, sizeof(info));
7587 else if (copy_from_user(&info, argp, sizeof(info)))
7591 err = update_array_info(mddev, &info);
7593 pr_warn("md: couldn't update array info. %d\n", err);
7607 err = md_set_array_info(mddev, &info);
7609 pr_warn("md: couldn't set array info. %d\n", err);
7757 mdu_disk_info_t info;
7758 if (copy_from_user(&info, argp, sizeof(info)))
7760 else if (!(info.state & (1<<MD_DISK_SYNC)))
7764 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);